第 3 章 分布式调用(2)
崔皓
3.3 服务注册与发现
3.1 节和 3.2 节中提到的负载均衡、API 网关都是分布式系统外部的请求对其内部服务进行调用的方式。顺着微服务的思路向下延伸,分布式系统内的服务之间是如何相互调用的呢?最简单的想法是服务 A 只需要知道服务 B 的地址和输入参数就可以对其调用了。如果服务 B 进行了水平扩展,则由多个服务 B 共同完成一个业务功能,此时服务 A 就有可能只调用多个服务 B 中的一个。至于具体调用哪一个可以通过负载均衡算法确定。示例代码如下:
在上述代码中,当服务 A 请求服务 B 时,通过 Nginx 的负载均衡配置,将服务 A 的请求分别路由到 192.168.1.1:8001 和 192.168.1.2:8002 这两个服务器上。换句话说,服务 B 作为被调用方,会把自己的调用地址发送到服务 A,服务 A 在自己的 Nginx 上配置访问服务 B 的地址,也就是说服务 A 知道该如何访问服务 B。
这样的配置方法虽然看上去解决了服务之间的调用问题,但是作为被调用方的服务 B 如果地址进行了不当调整,例如新增了服务或者有的服务已下线,就需要通知调用方服务 A 修改路由地址。服务的调用方和被调用方之间需要长期维护这样一个关于调用的路由关系,在服务比较多的情况下需要维护很多这样错综复杂的关系,势必会增加系统的负担,因此引入了服务注册与发现的概念。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
![](https://static001.geekbang.org/resource/image/d0/e4/d0880927e2a522a038be2d04bf19dfe4.png)
本文深入介绍了分布式系统中的服务注册与发现、远程调用的相关概念和原理,以及Netty作为RPC异步通信框架的特点和实现。在分布式系统中,服务之间的相互调用通过服务注册与发现来实现,而远程过程调用(RPC)框架则简化了网络通信的细节。文章详细介绍了RPC调用的请求、响应流程,动态代理和序列化的相关内容,以及Netty的原理和特点。通过本文的介绍,读者可以快速了解分布式系统中服务之间的调用和通信机制,以及RPC动态代理和序列化的相关知识,同时也能对Netty作为RPC异步通信框架的原理与特点有所了解。这些内容对于理解分布式系统中的服务调用和通信机制具有重要意义。文章还介绍了Netty的核心组件关系,包括EventLoopGroup、EventLoop、Channel、ChannelPipeline和ChannelHandlerContext,以及Netty的数据容器ByteBuf的工作原理和使用模式。通过本文的总结,读者可以快速了解Netty的核心组件和数据容器的工作原理,为深入学习Netty提供了基础知识。文章内容丰富,涵盖了分布式系统中的关键概念和技术特点,对于想要深入了解分布式系统和RPC通信框架的读者具有重要参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式架构原理与实践》
《分布式架构原理与实践》
立即购买
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论