Service Mesh:使用 Istio 管理微服务
1. 微服务与单体应用的对比
在设计和开发应用时,单体应用模式下,实现用户管理、链接管理、社交关系管理等功能相对简单,部署、监控和调试也不复杂。但随着应用功能、用户数量和开发团队的增长,单体应用的弊端逐渐显现。
微服务架构虽然带来了诸多好处,但管理难度大幅增加。例如,在安全方面,若要对服务间调用进行认证和授权,需要在服务间配置共享密钥,维护和更新密钥并非易事;分布式追踪方面,单体应用可通过堆栈跟踪捕获调用链,而微服务则需安装分布式追踪服务(如 Jaeger)并修改代码来记录跨度;集中式日志在单体应用中很容易实现,而微服务则面临挑战。
2. 使用共享库管理微服务的横切关注点
一种常见的方法是将配置、日志、密钥管理、追踪、速率限制和容错等横切关注点封装在一个或一组共享库中。例如,Netflix 的 Hystrix 是用于管理延迟和容错的 Java 库,Twitter 的 Finagle 是针对 JVM 的 Scala 库。
然而,这种方法存在严重的缺点:
- 语言限制 :共享库通常是用特定语言实现的,而系统中的微服务可能使用多种语言,这会限制微服务使用不同语言的优势。
- 维护困难 :选择使用共享库会面临一些不理想的选择,如将所有微服务限制为单一编程语言、为每种使用的编程语言维护跨语言共享库、接受不同服务与集中式服务的不同交互方式。
- 升级风险 :更新共享库时,由于它被多个服务共享,需要对所有服务进行全面升级,可能导致服务间通信问题,引发故障
超级会员免费看
订阅专栏 解锁全文
1119

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



