自从去年在一次上厕所的时候,翻开手机,看到微服务这一个概念,就认为这种架构的模式非常看好,自那以后,一直关注微服务相关的内容。目前微服务已经是一个非常火的概念,在Infoq几乎每条都有关于微服务的文章或者新闻。可见微服务已经像我们靠近。
有一些观点体现在微服务的微在体现在代码量上,微服务的代码行数一定非常少。关于这个观点,个人并不认同,我觉得使用代码行数来衡量微服务的话,就像使用代码量来衡量一个软件开发工程师一样,都是不科学。
微服务的微体现在职责的单一上,这个个人非常认同,微服务就是职责单一的服务。就像面向对象设计中的单一职责一样,没有绝对的单一,职责的单一完全取决于对于业务的分析和理解。微服务可以设计像Unix那样简洁。服务前端开发者可以像写Unix Shell脚本一样开发应用。
微服务的好处是显然意见的,微服务可以能够实现真正的敏捷,能够快速部署上线、能够具有很好的伸缩性、能够具有很好的扩展性。微服务还更容易形成积木,能够在产品的开发中,越跑越快。
微服务对基础服务设施的挑战。既然微服务的职责单一,那么就将要面对一个网站可能有成千上万个微服务。那么如何管理好微服务、以及微服务之间如何实现高速的通信、如何让开发者非常方便的调用微服务。如何建立完善的发布系统,能够实现快速上线。当然这些问题,目前已经有很多框架来解决。
微服务对开发者的挑战。微服务的团队一般按业务划分的,一个人负责一个服务或者一个人负责多个服务。那么微服务开发者,需要是一个全栈开发工程师,需要具备多种语言编程的能力、需要前后端的开发能力、需要运维知识、DBA知识。虽然目前技术发展非常快,而且越来越简单,但是成为一名全栈开发工程师,还是具有不少的挑战。
目前的云计算主要是指服务器、CDN和各种数据存储的产品。未来的云计算将是一个微服务的库,这些微服务提供了很多的基础能力,比如消息队列、推送服务甚至抽象出了部分行业的基础业务服务。这也是我认为的云计算的一个发展趋势,目前也有这样的云计算公司。所以微服务也是未来云计算的一种方式。未来前端(服务前端)开发者可能就像今天写Unix的Shell脚本一样做应用开发。
目前微服务已经在社区里,提的非常多,而且各种关于微服务的新闻和技术文章、技术分享也非常多,但是目前还没有成熟的微服务案例。所以微服务还在发展初期,期待一个成功的微服务案例出现!