Nacos——服务发现

一、服务的演变之路

1.1)单体架构(all in one)

单机架构在组别开发时会碰到代码版本提交和获取最新版本代码时组别成员之间产生很多冲突,在测试时不同服务提交新版本都会导致整个测试环境的重启(某一个服务需要在测试环境远端Debug)从而拖慢测试进度——类似于Oracle这种大型单体修改一个小功能重启需要二三十分钟

单体项目缺点:

某些服务比如库存更加依赖IO,可以偏向于数仓磁盘进行针对性提升,某些服务比如会员服务针对于会员的下单习惯进行算法推荐更依赖CPU计算,可以偏向于高CPU/高内存进行针对性提升。而单体只能又是大磁盘、又是高CPU高内存。

在于服务选型方面比如订单服务需要将Hibernetes转型为mybatis需要排除对于其它服务的影响,而且很容易牵一发动全身很多框架之间不兼容的隐性Bug出现

单体项目优点:

比微服务省略很多维护成本,部署简单一个jar包不关心启动顺序,不需要RPC调用都是本地效率高,像初创公司也不需要很多研发人员。

架构也就是M(Model)V(View)C(Controller),Model层对应infrastructure负责逻辑计算,View对应Service层负责计算出来结果展现,Contorller对应Web负责计算出来结果承装从而向外部展现

1.2)集群级垂直化

随着竞品越来越多服务量增大,服务进行横向拆分不同系统打包成不同war包,有时间的将数据库也进行拆分,内部通讯可以使用RPC外部可以使用Http,原先10个请求只能打到一个Tomcat服务器,现在两个Tomcat平摊各自只需要承担5个请求,再往下平摊到不同的war包上又分摊了压力

以系统为粒度会出现不同系统对于差不多的功能都需要自己去反复实现

1.3)SOA

将系统为粒度改成提取出来的基础服务为粒度打破业务壁垒,上层的系统不再像系统而像是不同服务拼装出来的一个虚拟盒子,比如订单系统需要订单ID为3的其它信息不是将请求直接发给其它系统而是通过ESB企业服务总线(通常称为BUS)转发给其他系统,其他系统根据订单ID提供自己掌握的信息到BUS,再由订单系统BUS去消费

随着服务量越来越大SOA的承载力全部压在ESB企业服务总线,超过一定量级还是满足不了

1.4)微服务

服务演变可以通过一个例子进行概括:

比如一个请求直接打到单体项目(地球),直接打到纵向拆分中(中国、美国),直接打到SOA(上海、北京、深圳),直接打到微服务(海淀区、闵行区、南山区、番禺区),随着粒度越来越精细所能够承担的压力也越来越分散

几百个war包导致上线需要排队,排到你负责项目上线时将需要的资源配置和上线的war包交给运维进行调试有问题当前解决,短时间解决不了还需要轮到下一个排队的人,自己回去改完再排队很麻烦

自动部署解决了运维压力大的问题,通过docker和k8s研发人员自己就可以搞定

微服务对于研发人员的压力增大在于原先一个服务中能调用的,现在拆分到十个微服务中,我需要的数据不在我的微服务中需要调用其它服务,又需要重新开放接口打成jar包,我的微服务再引用jar包——拆分没有具体标准拆的太细会导致通信成本过高(可以按DDD拆分)

微服务更多关注服务之间是不是做到了完全的解耦,类似于单一职责原则,而在重用性方面更关注解决大服务的重用,一些微小服务的重用并不是那么着急解决

二、Spring Cloud介绍

Netflix稳定性强于Alibaba,Alibaba功能更加丰富但需要更强的研发能力处理发现的Bug

Config对应Nacos配置中心,Eureka对应Nacos服务发现,Zuul对应Gateway(Sping Cloud自己研发团队),Ribbon和Feign组合成OpenFeign对应Dubbo,Hystrix对应Sentinel

三、什么是服务

3.1)服务发现的概念

有问题自动重启之后IP改变,服务注册中心通过心跳实时检测更新列表并将列表发送给需要获取服务列表的机器

3.2)服务发现的两种方式——客户端服务发现

不常用

3.3)服务发现的两种方式——服务端服务发现

常用,负载均衡在网关做的概率大

3.4)服务发现技术对比

CP高一致性;AP高可用性,两者是冲突的无法同时保证,比如分布式锁配置Redis集群的一致性,比如Redis集群A、B、C,B宕机了但是Redis的高可用性会通过A、C继续提供服务,那等B恢复了需要同步A、C的数据,那还没同步完之前请求打到B就没办法保证数据高一致性——解决方式是通过zk保证分布式锁的高一致性,zk发现集群有问题就不接请求了,等集群恢复再接收

3.5)Nacos架构图

sidecar额外挂载的程序(相当于抗日片三轮车旁边的座位),Consumer请求Provider根据Name而不是IP+Port

Config Service表示配置中心,Naming Service表示服务发现,Nacos Core核心包,Consistency Protocol底层协议,Nacos Console控制界面网页

四、Nacos实战(代码演示单机启动)

nacos-comsumer依赖也一样
sping.application.name就是Nacos架构图中的Name
返回provider hello
启动
Provider成功注册服务
启动
Consumer成功注册服务

五、Nacos核心源码解析

5.1)SpringCloud完成服务注册的时机

springboot启动会将META-INFO下spring.factories中的类自动注入
ApplicationListener提供接收事件功能
不管是Nacos融入SpringCloud还是其它组件,针对register()方法的级别都是ServiceRegistry<R>这个接口


5.2)NacosServiceRegistry的实现原理

5.3)服务提供者地址查询原理

5.4)服务注册原理

createEmptyService()

5.5)服务发现原理

服务地址动态感知原理

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容