微服务与微服务之间通信。一、通信协议我们选用的通信协议是http,其实现工具是retrofit。特点:实现简单,但是速度相较于tcp协议是慢一些如果对速度要求很高,可以使用tcp协议,实现产品可选用mina2/netty 二、服务路由说明:不使用netflix的ribbon做 ...
微服务与微服务之间通信。
一、通信协议
- 我们选用的通信协议是http,其实现工具是retrofit。
- 如果对速度要求很高,可以使用tcp协议,实现产品可选用mina2/netty
二、服务路由
说明:不使用netflix的ribbon做服务路由,自己来实现。
实现思路:
- 拉取可用服务列表(服务发现)serverList
- 缓存到本地guava cache中去,以后每隔10min从consulServer拉取一次(原本打算这样做),但是consulServer自己通过gossip协议会将服务数据广播给consulClient,每次获取服务器列表的时候,都是直接从本地agent(即consulClient)获取。
- 使用配置好的路由算法选出其中1台,执行逻辑
补充:当第二步执行逻辑超时或出错了,我们可以从剩下的机器中再选一台做,这样的失败重试可以通过"while(true)+局部计数器"的形式来实现。(这里暂时不做)
三、实现(由于代码改动比较大,列出完全版的代码)
- framework:基本框架模块
- myserviceA-server:myserviceA提供的服务逻辑
- myserviceA-client:对server进行封装,提供接口,供其他微服务(service)或者gateway或者app使用
- myserviceB-server:myserviceB提供的服务逻辑
- myserviceB-client:同myserviceA-client
1、framework
1.1、pom.
1 <??> 2 <project ="http://maven.apache.org/POM/4.0.0" ="http://www.w3.org/2001/ 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4 5 <modelVersion>4.0.0</modelVersion> 6 7 <parent> 8 <groupId>org.springframework.boot</groupId> 9 <artifactId>spring-boot-starter-parent</artifactId>10 <version>1.3.0.RELEASE</version>11 </parent>12 13 <groupId>com.microservice</groupId>14 <artifactId>framework</artifactId>15 <version>1.0-SNAPSHOT</version>16 17 <properties>18 <java.version>1.8</java.version><!-- 官方推荐 -->19 </properties>20 21 <!-- 引入实际依赖 -->22 <dependencies>23 <dependency>24 <groupId>org.springframework.boot</groupId>25 <artifactId>spring-boot-starter-web</artifactId>26 </dependency>27 <!-- consul-client -->28 <dependency>29 <groupId>com.orbitz.consul</groupId>30 <artifactId>consul-client</artifactId>31 <version>0.10.0</version>32 </dependency>33 <!-- consul需要的包 -->34 <dependency>35 <groupId>org.glassfish.jersey.core</groupId>36 <artifactId>jersey-client</artifactId>37 <version>2.22.2</version>38 </dependency>39 <dependency>40 <groupId>com.alibaba</groupId>41 <artifactId>fastjson</artifactId>42 <version>1.1.15</version>43 </dependency>44 <!-- 引入监控工具,包含health检查(用于consul注册) -->45 <dependency>46 <groupId>org.springframework.boot</groupId>47 <artifactId>spring-boot-starter-actuator</artifactId>48 </dependency>49 <!-- 引入lombok,简化pojo -->50 <dependency>51 <groupId>org.projectlombok</groupId>52 <artifactId>lombok</artifactId>53 <version>1.16.8</version>54 <scope>provided</scope>55 </dependency>56 <!-- 引入swagger2 -->57 <dependency>58 <groupId>io.springfox</groupId>59 <artifactId>springfox-swagger2</artifactId>60 <version>2.2.2</version>61 </dependency>62 <dependency>63 <groupId>io.springfox</groupId>64 <artifactId>springfox-swagger-ui</artifactId>65 <version>2.2.2</version>66 </dependency>67 <!-- retrofit -->68 <dependency>69 <groupId>com.squareup.retrofit</groupId>70 <artifactId>retrofit</artifactId>71 <version>1.9.0</version>72 </dependency>73 </dependencies>74 75 <build>76 <plugins>77 <plugin>78 <groupId>org.springframework.boot</groupId>79 <artifactId>spring-boot-maven-plugin</artifactId>80 </plugin>81 </plugins>82 </build>83 </project>
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:第三章 微服务之间的调用 + 服务发现 + 负载均衡 + retrofit通信
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。