软件设计思想一般围绕:表示层(JSP等) 、业务层(Controller、Service)、持久层(Dao)。

一、单体架构:

小流量应用在初期一般将应用程序、数据库、文件资源等部署在一台服务器上。优点:性价比高,开发速度快,成本
低。缺点:1、后期业务复杂度提高,代码量增大后不便于维护,不便于扩展;2、用户增加后,面对高并发压力;3、测试成本高 难度大。

所以在后期的解决方案为集群化部署。增加Nginx等负载均衡、增加集群部署的缓存服务器、文件服务器,对数据库进行读写分离(配置Mysql主从热备份)。如图: 

微服务架构与单体架构的区别 微服务和单体架构_运维

二、微服务

微服务特点:

1.将业务划分成一个一个的单元 独立部署服务;

2.服务之间使用http协议互相通信;

3.自动化部署(例如Jenkins);

4.不同语言之间使用API接口进行对接;

5.能使用不同的存储技术(例如每个服务都对应一个数据库,根据服务的业务划分,选择适合的数据库);

6.服务集中化管理(Eureka,Zookeeper,Consul);

7.使用分布式部署(要特别注意服务的独立性和服务相互调用的可靠性、分布式事务(两阶段提交)、全局锁、全局 Id、网络延迟、高并发的情况下 服务的线程资源耗尽、服务的相互依赖导致的雪崩效应(采用熔断机制解决)等);

微服务在 CAP 理论中采用的是 AP 架构。

微服务主要功能:

1.服务的注册和发现;2.服务的负载均衡;3.服务的容错;4.服务网关;5.服务配置的统一管理;6.链路追踪;7.实时日志