app开发定制springCloud ribbon-11 ribbon 负载均衡

一, 什么是        

        负载均衡(Load Balance,简称 LB)是高并发、app开发定制高可用系统必不可少的关键组件,app开发定制目标是尽力将网络流量app开发定制平均分发到多个服务器上,app开发定制以提高系统整体的响应app开发定制速度和可用性。

二,app开发定制负载均衡的主要作用

高并发:app开发定制负载均衡通过算法调整负载,尽力均匀的分配应用集群中各节点的工作量,以此提高应用集群的并发处理能力()。

伸缩性:添加或减少服务器数量,然后由负载均衡进行分发控制。这使得应用集群具备伸缩性。

高可用:负载均衡器可以监控候选服务器,当服务器不可用时,自动跳过,将请求分发给可用的服务器。这使得应用集群具备高可用的特性。

安全防护:有些负载均衡软件或硬件提供了安全性功能,如:黑白名单处理、防火墙,防 DDos 攻击等。

 三,负载均衡分类

        支持负载均衡的技术很多,我们可以通过不同维度去进行分类。负载均衡并不只是nginx.

        3.1 载体维度分类

                从支持负载均衡的载体来看,可以将负载均衡分为两类:硬件负载均衡、软件负载均衡

        3.2 硬件负载均衡

                硬件负载均衡,一般是在定制处理器上运行的独立负载均衡服务器,价格昂贵,土豪专属。硬件负载均衡的主流产品有:F5 和 A10。

硬件负载均衡的 优点:

  • 功能强大:支持全局负载均衡并提供较全面的、复杂的负载均衡算法。
  • 性能强悍:硬件负载均衡由于是在专用处理器上运行,因此吞吐量大,可支持单机百万以上的并发。
  • 安全性高:往往具备防火墙,防 DDos 攻击等安全功能。

硬件负载均衡的 缺点:

  • 成本昂贵:购买和维护硬件负载均衡的成本都很高。
  • 扩展性差:当访问量突增时,超过限度不能动态扩容。

        3.3 软件负载均衡

软件负载均衡,应用最广泛,无论大公司还是小公司都会使用。

软件负载均衡从软件层面实现负载均衡,一般可以在任何标准物理设备上运行。

软件负载均衡的 主流产品 有:Nginx、HAProxy、LVS

  • LVS 可以作为四层负载均衡器。其负载均衡的性能要优于 Nginx。
  • HAProxy 可以作为 HTTP 和 TCP 负载均衡器。
  • Nginx、HAProxy 可以作为四层或七层负载均衡器。

软件负载均衡的 优点:

  • 扩展性好:适应动态变化,可以通过添加软件负载均衡实例,动态扩展到超出初始容量的能力。
  • 成本低廉:软件负载均衡可以在任何标准物理设备上运行,降低了购买和运维的成本。

软件负载均衡的 缺点:

  • 性能略差:相比于硬件负载均衡,软件负载均衡的性能要略低一些。

四, 使用

        4.1 在服务消费者的启动类上加上 @Bean RestTemplate 类上加上@LoadBalance 注解

  1. @SpringBootApplication
  2. @EntityScan("com.zjk.order.com.zjk.product.entity")
  3. @EnableEurekaClient
  4. public class OrderApplication {
  5. @Bean
  6. @LoadBalanced
  7. public RestTemplate restTemplate() {
  8. return new RestTemplate();
  9. }
  10. public static void main(String[] args) {
  11. SpringApplication.run(OrderApplication.class,args);
  12. }
  13. }

4.2 服务消费者调用服务提供者的时候,只需要调用服务提供者的服务名称

  1. /**
  2. * 基于ribbon 的服务调用,使用服务提供者的服务名称
  3. * @param Id
  4. * @return
  5. */
  6. @GetMapping(value = "/findByIdByRibbon/{Id}")
  7. public TbProduct findByIdByRibbon(@PathVariable Long Id){
  8. try {
  9. TbProduct tbProduct = restTemplate.getForEntity("http://service-product/product/{Id}", TbProduct.class,Id).getBody();
  10. return tbProduct;
  11. }catch (Exception e){
  12. e.printStackTrace();
  13. }
  14. return null;
  15. }

4.3 展示效果

       访问消息消费者接口,通过数据的变化,来查看调用服务的不同。

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发