微服务开发中的客户端库、引用访问与版本控制
在微服务开发的过程中,客户端库的创建、通过引用访问数据以及服务版本控制都是至关重要的环节。下面将详细探讨这些方面的相关内容。
1. 客户端库
许多团队认为,为服务创建客户端库是服务开发的重要组成部分。这样做的好处是可以让服务的使用更加便捷,避免了在使用服务时重复编写代码。然而,如果服务器 API 和客户端 API 由同一批人创建,就可能会出现本应在服务器端的逻辑泄露到客户端的问题。当客户端库中混入的逻辑越多,内聚性就越容易被破坏,一旦服务器需要修复问题,可能就需要同时修改多个客户端。而且,这还会限制技术的选择,特别是在强制使用客户端库的情况下。
1.1 理想的客户端库模型
亚马逊网络服务(AWS)的客户端库模型值得借鉴。其底层的 SOAP 或 REST 网络服务调用可以直接进行,但大家最终都会选择使用各种软件开发工具包(SDK)之一,这些 SDK 对底层 API 进行了抽象。重要的是,这些 SDK 是由社区或非 API 开发人员编写的,这种分离方式避免了客户端库的一些常见问题。其中一个关键原因是,客户端可以自主决定何时进行升级。
1.2 Netflix 的客户端库实践
Netflix 非常重视客户端库的使用,但有些人可能仅仅将其视为避免代码重复的手段。实际上,Netflix 的客户端库更多地是为了确保系统的可靠性和可扩展性。这些客户端库负责处理服务发现、故障模式、日志记录等与服务本质无关的方面。在 Netflix 的大规模运营中,如果没有这些共享的客户端,很难保证每一次客户端与服务器的通信都能正常运行。不过,随着时间的推移,客户端和服务器之间产生了一定程度的耦合,这也带
超级会员免费看
订阅专栏 解锁全文
23

被折叠的 条评论
为什么被折叠?



