java B2B2C Springcloud电子商务平台源码-RIBBON 核心设计和原理分析

yayay · · 95 次点击 · · 开始浏览    
Ribbon, Netflix 公司开源的用于进程通信场景的经过实战检验的客户端项目。它提供了远程调用的负载均衡,网络状态检查和容错等功能。Ribbon 基于软件的负载均衡方式与目标集群中的机器进行通信。这里忽略状态统计部分,健康检查的逻辑部分,重点分析负载均衡部分。 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六 下面是个典型的使用方式开始,先指定一些目标服务器地址, ``` sample-client.ribbon.listOfServers=www.taobao.com:80,www.baidu.com:80,www.sina.com:80 ``` 然后借助ribbon 封装的 httpClient 来发送请求(访问站点首页),循环20次是希望打印出负载均衡的效果。 ``` RestClient client = (RestClient) ClientFactory.getNamedClient("sample-client"); HttpRequest request = HttpRequest.newBuilder().setUri(new URI("/")).build(); for (int i = 0; i < 20; i++) { HttpResponse response = client.executeWithLoadBalancer(request); System.out.println("Status code for " + response.getRequestedURI() + " :" + response.getStatus()); } ``` 下面按 Ribbon 的主要模块进行设计分析,并在最后部分分析上述代码的效果。 Ribbon-core 模块 这一模块中,主要定义通用的调用抽象。ribbon 的 client 处理请求并返回响应。 ``` public interface IClient<S extends ClientRequest, T extends IResponse> { public T execute(S request, IClientConfig requestConfig) throws Exception; } ``` ClientRequest, 是独立于所以具体实现的通信协议的抽象。它主要包括:uri(远程资源的定位符),loadBalancerKey(Object类型,这是决