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