搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 魔都码农 > 第六章:侵入式服务治理

第六章:侵入式服务治理

魔都码农 2020-07-01

侵入式服务治理

  • 在应用端使用框架提供的API开发程序并提供服务治理方案。

dubbo

更侧重于RPC而非服务治理

概述

  • 服务间基于RPC调用
  • RPC 抽象一点将就是序列化,远程通信,反序列化。

核心流程

  • 组成部分:服务提供者,服务消费者,注册中心
  • 流程:
    • 1:服务提供者完成初始化后向注册中心注册服务
    • 2:服务消费者完成初始化后向注册中心订阅服务
    • 3:注册中心在服务提供者列表发生变化时将变化同步给服务消费者
    • 4:服务消费者和服务提供者初次建立链接后,即持有长链接,他们之间将通过透明化的远程调用进行通信。

注册中心

  • 支持类型,1:Multicast,2:Zookeeper,3:Redis,4:Simple,5:Nacos
  • 目前主流注册中心是Zookeeper和2.8之后的Nacos。
  • 注册信息写入ZK节点,其中根节点为dubbo,URL为临时节点,保存IP端口调用方法等元数据信息,以及传输协议,最大连接数,路由决策等信息。
  • 支持多注册中心
  • ZK保存节点如图

负载均衡

  • 负载均衡为客户端负载均衡。即由消费者一方决定将通信发往哪个服务提供者。
  • 消费者实例启动时会从注册中心同步一份服务列表,并在服务提供者发生变化时跟新本地数据副本。每次远程调用时,消费者读取本地副本,并根据合适的负载均衡策略选择不同的服务提供方。
  • 特点
    • 1:弹性好:机遇服务发现可以快速扩容或缩容,相比生硬服务列表配置更加动态,灵活和实时(之前NG好像在upStream中是这么玩的,但两个不是同一个东西),使得应用能够已原生方式利用云资源的弹性伸缩。
    • 2:高可用,去中心化,任何节点挂掉不会对服务产生实质影响。
    • 3:性能优,采用dubbo协议的服务消费者和服务提供者之间是点对点直连的。建立链接后无需断开,无需重新经过三次握手,无需经过负载均衡服务器的二次转发。

远程通信

  • RMI,Hessian,HTTP,WebService,Thrift,dubbo等。
  • 默认支持Dubbo(特点)
    • 1:创建固定长链接,减少建立链接握手次数
    • 2:通过使用线程池并发处理请求提升并发效率
    • 3:由于链接复用,适合小数据量请求,避免大文件占用带宽
    • 4:并非原生NIO,而是才用netty做为底层通信,可以切换为mina
    • 5:支持多种序列化,Dubbo,Json,pb,java原生等,可通过配置切换。序列化会对远程通信的吞吐量,响应速度,网络带宽消耗产生比较大的影响,是提升分布式系统性能的关键因素

限流

  • 针对服务提供方,保护自己不被打垮。可配置实例的最大可接受连接数,最大线程数,每个服务提供者可建立的长链接数。

治理中心

  • dubbo-admin,仅需要与注册中心关联即可
  • 提供一个可视化中心,辅助做运维工作。提供了分组查询、配置更改、加权降权、禁用启用、权限控制、负责人管理等运维功能。

监控中心

  • 现有dubbo-monitor不够好
    • 1:缺乏完善的调用链统计功能
    • 2:无法绘制系统的整体调用关系
    • 3:无法钻去dubbo之外的请求信息

spring-cloud

  • 提供了一套云原生开发组件,使用统一编程模型,为配置管理,服务发现,负载均衡,网关,限流熔断,日志追踪等提供了一套完成且便捷的解决方案。每个组建都可以写好多,这里就展开了。


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《第六章:侵入式服务治理》的版权归原作者「魔都码农」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注魔都码农微信公众号

魔都码农微信公众号:gh_44f441422388

魔都码农

手机扫描上方二维码即可关注魔都码农微信公众号

魔都码农最新文章

精品公众号随机推荐