什么是微服务?java
微服务没有一个标准统一的概念,我的理解为:微服务是一种可让软件职责单1、松耦合、自包含、能够独立运行和部署的架构思想。架构
关键思想就是:拆分、单1、独立、组件化。把本来一个庞大、复杂的项目按业务边界拆分一个一个独立运行的小项目,经过接口的方式组装成一个大的项目。微服务
微服务解决了什么问题?组件化
微服务的出现及流行,必定有它的过人之处,既解决了非微服务项目的部分问题或缺点。编码
相对于微服务,普通的项目都会包含不少功能的,是一个大而全的“超级”工程。好比:以普通架构方式实现的电商平台会是一个包含:登陆、权限、会员、商品库存、订单、收藏、关注、购物车等功能的单一项目。随着项目业务愈来愈复杂、开发人员愈来愈多相应开发、编译、部署、技术扩展、水平扩展都会受到限制。接口
开发开发
太多功能在一个项目中,可能会让代码复杂、结构混乱、业务关联混乱、技术单一。过多的功能,让整个项目结构复杂,业务相互交织,可能致使开发人员对业务的理解和代码实现相互交织,最后没人能彻底理解整个项目。并且也很难控制每一个开发人员能“合法合规”的编码,可能会把两个原本松耦合、互不影响的功能由于实现“简单”就偷懒强关联在一块儿。部署
技术单一编译
单一的项目为了技术的统一和管理的简单方便,通常都会采用统一的技术实现。可是超大型业务如电商平台,不可能只采用一种技术(如:java),可能会结合业务及不一样技术优缺点和技术团队优执采用不一样的技术。若是把项目拆分红不一样的小项目,每一个小项目能够根据本身的特色采用不一样技术,只须要提供统一的接口实现对接便可,最大化技术的优点。电商