微服务随笔

2020-01-16  本文已影响0人  王司技术谈

程序不仅仅包括代码本身,还包括整个代码的运行环境,如构建的可运行镜像docker环境,包含程序所依赖各种服务的k8s部署整体定义,所依赖的CI/CD环境。不但有代码而且要有一个快速部署环境的定义,使得程序不仅仅是静态的代码而是一个可以快速部署的动态的服务。

有效的拆分逻辑(应用),是软件开发中关键的问题(可维护性前提)。软件开发一直在解决程序的解耦问题,从函数,到类,到类库、组件、包,再到动态层级的微服务。

微服务并不是一个新的概念,只是之前由于没有很好的技术和工具,实现成本太高而没有普及,随着容器技术、CI/CD技术、k8s、Service Mesh 等技术框架的到来,微服务实施的难点一点点被击破,微服务变得越来越流行。微服务从整体运行环境来解耦应用(代码层级,计算资源部署使用层级 网络传输层级)。

代码不是微服务,微服务是由CI/CD流程工具、 分布式运行环境(如k8s)、Service Mesh服务(监控 log 熔断 重试 验证)构成。

程序设计管理 为了解耦,微服务是更高层面的解耦,微服务是一种架构理念

微,狭义来讲就是体积小,代码体积小,团队规模小,功能逻辑简单,从代码功能层级讲内聚更高,小团队更符合敏捷的思想,执行效率更高。

引入微服务的点

1.复杂性逐渐变高
2.技术债务逐渐上升
3.部署速度逐渐变慢
4.阻碍技术创新
5.无法按需伸缩

微服务的好处

积木原则 模块原则 使得程序构建更加灵活

微服务每个服务都可以使用不同的开发语言和技术,使得开发模式更灵活,团队更好构建,更好分工,更好合作。

每个子系统就会更加内聚,彼此的依赖耦合能变弱,跨系统的沟通成本也就能降低。

快速扩容网络

微服务带来的挑战

对公司整体技术要求提高了如要掌握CI/CD、docker、K8S、 istio等相关技术,对公司架构要求更高了,需要定义微服务的功能和边界。

上一篇 下一篇

猜你喜欢

热点阅读