1、微服务的产生


首先微服务并不是被发明出来的,而是在软件开发的工程实践中总结出的一种趋势或者模式。随着领域驱动设计、持续交付、按需虚拟化、基础设施自动化、小型自治团队、弹性云计算这些实践的流行,微服务也应运而生。很多组织发现细粒度的微服务架构可以帮助他们更快地交付软件,并且有更多机会尝试新技术。微服务在技术决策上给了我们级大的挑自由度,使我们能够更快地响应各种变化。


2、什么是微服务


微服务就是一些协同工作的小而自治的服务。微服务有如下的特点:


(1)专注


我们在写代码的时候,很重要的原则就是高内聚,低耦合。将这个思维应用在服务设计上,就是需要根据业务的边界来确定服务的边界,来确定某个功能代码应该放在哪里。


(2)足够小


这一条特点和上一条特点是密不可分的,微服务如果专注于一件事情,那么它就是足够小的。


(3)自治性


一个微服务就是一个独立的实体。它可以独立的部署,甚至独立的作为一个OS进程存在。


3、微服务的优缺点


(1)技术异构性


在一个由多个服务相互协作的系统中,可以在不同的服务中使用最适合该服务的技术。比如对某些系统使用不同的缓存系统或者NoSQL数据库等。微服务可以帮助我们更快地采用新技术。对于整个系统而言,采用新的语言,框架,数据库是一件风险很大的事,而对微服务系统而言,总会有一些地方能让我们使用新的技术。


(2)弹性


如果系统中一个组件不可用了,对于单服务的系统而言,只能通过将服务部署在不同的系统中来降低功能完全不可用的概率,然而微服务系统本身就能够很好地处理服务不可用和功能降级问题。


(3)扩展性


单服务系统只能作为一个整体进行扩展,而微服务系统可以只对需要扩展的服务进行扩展。


(4)简化部署


单服务系统中,即使只修改了一行代码,也需要重新部署整个应用。这种部署的影响很大,风险很高,于是在实际的生产中,部署的频率就会被降低。而微服务架构中,各个服务的部署是相对独立的,每次可以只更新特定部分的代码。


(5)重构便利性


如果有一段很老的代码,同时它的代码又庞大且丑陋。这些系统却无人敢于重构,根本原因就是它对公司的运营至关重要,而且一旦修改它会牵一发而动全身。使用微服务的团队可以在需要的时候轻易地重写嗠,或者删除不再使用的服务。


4、微服务相关技术应用


(待补充)


5、微服务与SOA的区别


微服务架构的重点就是业务系统需要彻底的组件化和服务化,拆分出来的小应用可以独立开发,设计,运行和运维。这些小应用之间通过服务完成交互和集成。每个小应用从前端web ui,到控制层,逻辑层,数据库访问,数据库都完全是独立的一套。每个小应用除了完成自身本身的业务功能外,重点就是还需要消费外部其它应用暴露的服务,同时自身也将自身的能力朝外部发布为服务。如果一句话来谈SOA和微服务的区别,即微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。