本文最初发表于Rinor Maloku的个人站点,经原作者授权由InfoQ中文站翻译分享。
Istio是一个开源项目,由来自Google、IBM和Lyft团队协作开发,它为一组特定的问题提供了解决方案,要理解这个解决方案,我们就要明白这些问题到底是什么。当从单体架构迁移到基于微服务的应用时,会带来很多的复杂性,举例来说:
- 流量管理(Traffic management):超时、重试、负载均衡;
- 安全性(Security):终端用户的认证和授权;
- 可观察性(Observability):跟踪、监控和日志。
这些问题都可以在应用层解决,但这样的话,你的服务就无法称其为“微”了,实现这些功能所出的努力都会对公司的资源带来一定的压力,而这些资源本来是可以用来交付业务价值的。我们举个例子:
PM:如果增加一个反馈的特性,预计需要多长时间?
Dev:两个sprint。
PM:什么?!这只是一个简单的CURD!
Dev:创建CURD的功能是非常简单的,但是我们需要对用户和服务进行认证和授权。而且因为网络不可靠,我们需要在客户端实现重试和断路器,为了避免整个系统出现停止响应的情况,我们还需要超时和舱壁模式,除此之外,为了探测出现的问题,我们还需要监控、跟踪……