理解服务治理

作者:大发黄金版网页app | 2020-08-01 16:08

  授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!

  授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

  授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。

  narutomst:被码云的教程给误导了,生成公钥时都不敢填邮箱了,因为注册Github和Gitee用的是同一个邮箱。码云给出的解决方法是和不同网站进行SSH通信要填不同的邮箱。现在想明白了,生成公钥的语句中不涉及目标网站,所以一个公钥完全可以用于多个网站。哈哈哈

  weixin_42683814:服务治理是主要针对分布式服务框架的微服务,处理服务调用之间的关系、服务发布和发现、故障监控与处理,服务的参数配置、服务降级和熔断、服务使用率监控等。 需要服务治理的原因: 过多的服务 URL 配置困难; 负载均衡分配节点压力过大的情况下,需要部署集群; 服务依赖混乱,启动顺序不清晰; 过多服务,导致性能指标分析难度较大,需要监控; 故障定位与排查难度较大;

  服务治理发展过程:开始是单体服务,随着业务和访问量增大,架构发生变化,垂直划分,达到解耦和的目的。但是随着应用的进一步增加,也就是引入SOA,出现了服务相互调用的情况,这个时候可以使用简单的RMI或RPC,通过配置服务的URL地址进行调用。嗯还不错。

  但是业务进一步增加,配置URL对于地址的管理变得复杂,很乱,不好梳理。这时,迫切需要一个注册中心,动态的注册和发现服务,URL地址神马的都不用我来管了。消费者,只需要获取提供者的地址列表,就可以实现软负载均衡和failover。

  服务治理是主要针对分布式服务框架,微服务,处理服务调用之间的关系,服务发布和发现(谁是提供者,谁是消费者,要注册到哪里),出了故障谁调用谁,服务的参数都有哪些约束(尤其是dubbo.xml配置),如何保证服务的质量?如何服务降级和熔断?怎么让服务受到监控,提高机器的利用率?

  一想Dubbo是什么,首先想到的就是Dubbo的架构图,包括注册中心、提供者、消费者、监控中心,然后就是他们之间的关系。

  消费者从注册中心获取到的提供者地址列表,采用软负载均衡算法,选择一个提供者调用,这样做的好处是,一个提供者调用失败,就可以选择另外一个;

  服务提供者和消费者,在内存中累计调用次数和调用时间,会以心跳的方式,发送给监控中心;

  ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能。

  因为zookeeper是树形结构,里面都是一个个的ZNode组成,而且是运行在内存中的,性能会非常高

  一般在线上都会搭建一各zookeeper集群,保证高可用的同时,就是能够稳定提供发布订阅功能。

  总结:系统开始由单体系统到编程面向服务(SOA)成为分布式系统之后,为了让服务调用更清晰,不需要人员再写URL,并且费劲儿的梳理,使用Dubbo+zk这样的服务治理工具是非常必要的。了解它内部都有什么,有助于以后出现问题有排查思路。

  时,由MockClusterInvoker封装具体的集群策略类,默认是FailoverCluster类,具体逻辑见《4.4.2 远程引用

  》部分。由集群策略类将Directory中的多个Invoker伪装成一个Invoker,对上层调用端是透明的,不同的集群策略有不同的处理方式。主要流程基本是一致的。1)首先调用Mock......

  1 集中式架构a.是什么:单一程序,一个应用,将所有功能都部署在一起b.应用场景:网站流量很小时c.优点:减少部署节点和成本d.缺点:代码耦合,开发维护困难无法针对不同模块进行针对性优化无法水平扩展单点容错率低,并发能力差2 垂直拆分a.是什么:根据业务功能将系统拆分成多个程序b.应用场景......


大发黄金版网页app