作为Spring Cloud Alibaba微服务架构实战派上下册和RocketMQ消息中间件实战派上下册的作者胡弦。
Nacos是一款面向云原生服务的注册中心和配置中心技术解决方案,既然要与服务打交道,那么通信渠道是必不可少的组件,那么Nacos是如何建立与应用服务之间的通信渠道的了?
?首先,Nacos支持两种类型的通信渠道,一种是HTTP,另外一种是gRPC,关于HTTP这里就不做过多的阐述,大家只要知道它是无状态的就行,那么gRPC呢,它是一款高性能的RPC框架,性能可以和大名鼎鼎的Netty媲美。
其次,这里就给技术人解释一下Nacos与应用服务建立通信渠道的过程。
当技术人员部署了Nacos的二进制包,并搭建完成Nacos集群之后,其实这个时候就已经启动了Nacos服务端的通信渠道(HTTP和gRPC)。
这个技术人员应该容易理解的,Nacos将服务端的通信渠道功能封装在Nacos注册中心和配置中心中,这样它们就可以共用这两个服务端通信渠道。
Nacos HTTP通信渠道其实就是一系列的Web Controller接口(熟悉Java Web编程的技术小伙伴对这个比较清楚,这里就不解释啦)。当进程起来之后,应用服务就可以访问Nacos的IP地址以及对应Web Controller接口URI就可以调用Nacos注册中心和配置中心的功能。
Nacos gRPC通信渠道就复杂一点,当然如果技术小伙伴有gRPC框架的开发经验,理解起来也不难的。
当然目前Nacos支持的RPC通信渠道只有gRPC,将来肯定会引入其他的RPC通信渠道的,比如Netty。这个是可以从Nacos关于RPC通信渠道的类设计中体现出来的,已经提前做了RPC通信渠道多样性的可扩展性设计,感兴趣的小伙伴可以去关注一下喔,有利于大家理解架构的可扩展性设计哈,而不是一味的CRUD代码的编写。
关于Nacos的gRPC通信渠道的可扩展性的类,技术人可以关注抽象模版类BaseGrpcServer和BaseRpcServer。
同样的道理Nacos注册中心和配置中心启动成功之后,也会共用这个gRPC服务端通信渠道。
最后,就是应用服务依赖Nacos提供的客户端API,客户端通信渠道会伴随着应用服务一起在JVM中启动。
如果待注册的服务实例是临时实例,则应用服务会调用gRPC客户端去访问Nacos的服务端gRPC通信渠道完成服务的注册,反之服务实例是持久化实例,则走HTTP通信渠道。
如果应用服务需要订阅其他服务提供的API,则直接走gRPC通信渠道去完成服务的订阅。
关于应用服务中的客户端通信渠道,技术人可以参考NamingClientProxyDelegate类,这里就不阐述啦。
如果应用服务与Nacos配置中心交互,则直接使用gRPC通信渠道,具体可以参考Nacos的RpcClientFactory类,这里就不阐述啦。
另外我的新书RocketMQ消息中间件实战派上下册实战派已经上架啦。
?本书总共包括如下十大特色,供技术小伙吧去参考。
本书将RocketMQ的技术原理和最佳实践体系化,按照由浅到深的顺序呈现给读者,使读者可以按照章节顺序按部就班地学习。当学习完全书内容之后,读者不仅能熟悉RocketMQ的核心原理,还能充分理解RocketMQ的“根”。
本书不仅包括RocketMQ4.x(4.9.2版本)的核心原理分析和最佳实践,还包括RocketMQ5.x(5.1. 0版本)的新特性分析和最佳实践。
?
本书精心研究了程序类、架构类知识的认知规律,全书共分为6篇:①基础;②进阶;③高级;④高并发、高可用和高性能;⑤应用;⑥新特性,是一条相对科学的主线,让读者快速从“菜鸟”向“RocketMQ分布式架构实战高手”迈进。
一图胜于文,书中在涉及原理、架构、流程的地方配有插图,以便读者更加直观地理解。
?
本书创造性地分析了RocketMQ具备高并发、高可用和高性能的功能及原理,并从架构的视角展开分析,这些也是程序员进阶为技术专家或架构师必备的技能。
以下为从架构师和技术专家的视角分析RocketMQ典型案例,读者阅读完本书之后,也能够达到这样的水准。
?
本书介绍了大量的实战案例,能让读者“动起来”,在实践中体会功能,而不只是一种概念上的理解。
?在讲解每一个知识模块时,我在思考:在这个知识模块中,哪些是读者必须实现的“标准动作”(实例);哪些“标准动作”是可以先完成的,以求读者能快速有一个感知;哪些“标准动作”具有一定难度, 需要放到后面完成。读者在实践完书中的案例之后,就能更容易理解那些抽象的概念和原理了。
本书的目标之一是,让读者在动手中学习,而不是“看书时好像全明白了,一动手却发现什么都不会”。通过体系化的理论和实战案例去培养读者的主动学习能力,这样本书的价值就会被最大化。?
本书相信“知行合一”的理念,而不是“只知,而不行”,避免开发人员出现眼高手低的现象。尤其是在技术面试过程中,面试官更加看重的是既懂原理,又能够主动是实践技术的技术人。
本书以系统思维的方式,从业务功能视角剖析?RocketMQ?底层的技术原理,使读者具备快速阅读?RocketMQ?框架源码的能力。读者只有具备了这种能力,才能举一反三,实现更复杂的功能,应对更复杂的应用场景。
本书除了分析大量的原理和实战案例,还从运维的视角分析?RocketMQ?的最佳实践(消息的可追踪性和稳定性),让开发人员也能从中受益。
本书向读者展示了如何修改?RocketMQ?源码,并快速验证案例分析。这样,读者可以从中学到参与开源的技能,并为后续自己能够参与开源做准备。
为了提高读者阅读本书的体验,在有上下两册的前提下(巨无霸,超过800页),出版社不吝啬印刷成本,依然采用双色印刷。
为了提高读者学习RocketMQ的效率,我这边结合我自身从RocketMQ小白到RocketMQ专家的经历,为读者汇总了一条最佳学习路径。