[TOC]
Q:什么是微服务? 答:微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。我们在此引用 ThoughtWorks 公司的首席科学家 Martin Fowler 的一段话:
In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies. 谷歌翻译如下: 简而言之,微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。 这些服务是围绕业务功能构建的,可以通过全自动部署机制独立部署。 这些服务的集中管理最少,可以用不同的编程语言编写,并使用不同的数据存储技术。
为什么会出现微服务? 比如:下图就是常见扩展方式(集群),但是我们现在的性能瓶颈是支付模块,希望只针对支付模块做水平扩展,下面的单体架构系统是做不到的。
WeiyiGeek.单体架构
单体架构的痛点:在传统的MVC架构中,所有业务子模块系统都集成在一个很重的JVM进程之中; 单体架构的好处与坏处:所有的代码都在同一个项目之中便于管理,当产品规模达到一定限度时候其耦合性变高开发成本也会变高;
微服务与单体架构的展现:图中左边是单体架构的集群,右边是微服务集群。
WeiyiGeek.单体与微服务
微服务有什么样的具体特点呢?
WeiyiGeek.模块数据库分离
WeiyiGeek.水平与垂直团队
注意:这种垂直划分只是一个理想的架构,实际在企业中并不会把团队组织架构拆分得这么绝对。
Q:微服务与面向服务架构SOA的区别? 在上面我们了解了什么是微服务,但是概念听起来和SOA架构思想好像差不多,但实际上是有所区别的;SOA和微服务都是架构思想; SOA架构:是一种粗粒度、松耦合的服务架构,其更多的强调异构系统之间的服务通信,在Dubbo框架与Spring Cloud框架都很好的支持了SOA和微服务架构;
WeiyiGeek.SOA架构
微服务架构的不足: