作为攻城狮的你,有没有每天被微服务充斥着大脑?不得不说,微服务现在在博客、技术订阅号中出现的频度越来越大,受关注程度也越来越高,那我们就完全没有可能不去注意一下它了。提到微服务,我们应该先将目光转移到架构的分层理论,不管是两层,还是三层,或者是加入各种设计模式,加入各种修饰的“七层”,都可以作为研究微服务的基础理论。
✎ 架构生涯中的三层应用
所谓的三层,就是应用展示(UI)层,业务逻辑(B)层,数据连接(D)层。而现在耳熟能详的三层应用架构恰好是从一层经历两层发展而来的:
✎ 微服务
小编的理解,微服务 就是在SOA理念的基础上,将服务的粒度划分的更小,更细。那么问题来了,服务的粒度划分到多小,多细才能称得上微?
我们完全可以把微服务理解成一个组件或者部件,举个例子,轮胎对于一部汽车就是一个组件,当这个组件出现问题,或者需要升级,那么我们就去找另外的满足需要的轮胎,而我们 在开发程序时,也是这样的原理:我们将三层的应用程序中的按照逻辑或者业务分成不同的模块(工程),每个分出来的组件都有自己固定的职责:比如,支付,用户管理等,一旦产品发生需求变更或者代码升级,我们只需要修改某个组件的代码,部署时也完全可以只启动这个组件所在的服务器,避免对其他环境和业务造成比必要的干扰。
所以,我们不难得出:判断微服务没有严格的标准,而作为微服务的每个组件,都有自己独立的职责,也可以说是单一职责原则;每个组件的开发都会有不同于其他组件的技术,形成技术的多样性;这样,团队组建的时候可以完全以组件的技术为趋向;而以上的这些优点,就更符合现在敏捷开发的思想和原则;
但是随着服务量的增多,每个服务都需要独立的配置,日志管理,监控,部署,所以使用微服务架构,可能会使维护成本产生指数级的增长。
综上所述,微服务强调的是一种独立开发、独立测试、独立部署工具、存储技术来解决业务问题的思方式和思想,也是一种以更灵活,更扩展的开发架构;