你的位置:首页 > 软件开发 > ASP.net > 第三章 微服务之间的调用 + 服务发现 + 负载均衡 + retrofit通信

第三章 微服务之间的调用 + 服务发现 + 负载均衡 + retrofit通信

发布时间:2016-06-01 15:00:07
微服务与微服务之间通信。一、通信协议我们选用的通信协议是http,其实现工具是retrofit。特点:实现简单,但是速度相较于tcp协议是慢一些如果对速度要求很高,可以使用tcp协议,实现产品可选用mina2/netty 二、服务路由说明:不使用netflix的ribbon做 ...

微服务与微服务之间通信。

第三章 微服务之间的调用 + 服务发现 + 负载均衡 + retrofit通信

一、通信协议

  • 我们选用的通信协议是http,其实现工具是retrofit
    • 特点:实现简单,但是速度相较于tcp协议是慢一些
  • 如果对速度要求很高,可以使用tcp协议,实现产品可选用mina2/netty

 

二、服务路由

说明:不使用netflix的ribbon做服务路由,自己来实现。

实现思路:

  1. 拉取可用服务列表(服务发现)serverList
    • 缓存到本地guava cache中去,以后每隔10min从consulServer拉取一次(原本打算这样做),但是consulServer自己通过gossip协议会将服务数据广播给consulClient,每次获取服务器列表的时候,都是直接从本地agent(即consulClient)获取。
  2. 使用配置好的路由算法选出其中1台,执行逻辑

补充:当第二步执行逻辑超时或出错了,我们可以从剩下的机器中再选一台做,这样的失败重试可以通过"while(true)+局部计数器"的形式来实现。(这里暂时不做)

 

三、实现(由于代码改动比较大,列出完全版的代码)

第三章 微服务之间的调用 + 服务发现 + 负载均衡 + retrofit通信

  • framework:基本框架模块
  • myserviceA-server:myserviceA提供的服务逻辑
  • myserviceA-client:对server进行封装,提供接口,供其他微服务(service)或者gateway或者app使用
  • myserviceB-server:myserviceB提供的服务逻辑
  • myserviceB-client:同myserviceA-client

1、framework

第三章 微服务之间的调用 + 服务发现 + 负载均衡 + retrofit通信

1.1、pom.

第三章 微服务之间的调用 + 服务发现 + 负载均衡 + retrofit通信第三章 微服务之间的调用 + 服务发现 + 负载均衡 + retrofit通信
 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 (#换成@)。

可能感兴趣文章

我的浏览记录