Kubernetes微服务实战
上QQ阅读APP看书,第一时间看更新

2.2 微服务编程——少即是多

回想一下学习编程的过程,起初你编写了一些程序,这些程序接受简单的输入,进行处理并产生一些输出,你可以将整个程序放在脑海中。

你了解每一行代码。调试和故障排除很容易。例如,考虑一个在摄氏和华氏温度之间转换温度的程序:

这个程序很简单。如果出现问题,它可以很好地验证其输入并显示如何运行。该程序执行的实际计算仅是转换温度的两行代码,但它长达45行,还是在没有任何注释的情况下。这45行代码非常易读且易于测试。没有任何第三方依赖项,只有Go标准库。没有IO(文件、数据库、网络)。无须身份验证或授权。无须限制调用速率。没有日志。没有指标。没有版本控制、运行状况检查或配置。没有部署到多个环境,也没有监控。

现在,考虑将这个简单的程序集成到一个大型企业系统中,如图2-1所示,你将不得不考虑许多方面。系统的其他部分将开始使用温度转换功能。突然间,最简单的操作也可能会产生连锁反应,对系统其他部分的更改可能会影响这个温度转换器。

图2-1 将温度转换器集成到一个大型企业系统

这种复杂性的跳跃是自然的,因为大型企业系统有许多要求。微服务的愿景是通过遵循正确的架构准则和已建立的模式,额外的复杂性可以被整齐地打包并用于许多小型的微服务,它们共同实现系统的目标。理想情况下,开发人员大多数时候都可以与周围的系统隔离。但是,需要付出很大的努力才能提供正确的隔离度,并且允许微服务可以在整个系统的上下文中进行测试和调试。