一、微服务比单体应用好在哪里???tomcat
单体应用:微信
1)单体应用全部的功能都部署在一个tomcat里面,不利于单个功能的吞吐量并发
2)单体应用部署方式是集群方式,扛不住了就多部署几个tomcat分布式
3)单体应用不利于维护,可能其中某个模块错误,就致使整个系统的流程没有办法正确走下去微服务
4)单体应用团队开发时候,耦合度较高,可能须要了解其余成员的代码和功能工具
5)单体应用开发周期长,升级麻烦,难以维护开发工具
微服务:代理
1)微服务能够更好的平滑扩展。根据并发量,功能点等等规划服务,再根据实际场景平滑扩展,提供服务的吞吐量事务
2)微服务部署方式是分布式部署,根据服务的状况,决定服务节点的个数路由
3)微服务中服务划分好后,那么各自服务负责各自的业务点,就算某个服务出现错误,那么也不会影响其余服务的正常运转
4)微服务更加适用于团队开发,成员各自负责各自的业务功能
5)微服务更容易升级,快速开发,快速迭代,快速上线。同时支持独立开发/独立部署
二、公司为何会开展微服务???
1)微信、人工客服这两个项目,常常因为瞬时并发量较大,并且用户体量未知,致使系统常常挂
2)有些项目客户反应响应较慢
3)现场同事升级和维护过程较麻烦,周期较长
三、微服务选型???
Spring Boot/Spring Cloud/Docker
Spring Boot:只不过是为了让咱们快速用Spring集成开发,是Spring体系微服务的起点
Spring Cloud:是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操做提供了一种简单的开发方式
Docker:它能让更多数量的应用程序在同一硬件上运行;它让开发人员易于快速构建可随时运行的容器化应用程序;它大大简化了管理和部署应用程序的任务
注意:
1)微服务中服务与服务之间的事务很难控制
2)微服务中必需要有监控,否则出了问题,在服务较多的状况下,短期比较难以排查
3)用微服务必需要运用Docker这种自动化部署,否则会比原先单体应用部署起来,更加复杂