

把所有功能都集中在一个应用中,统一部署,开发成本、部署成本和维护成本低。
优点:项目架构简单,适合用户量少的项目,开发成本低,项目部署在一个节点上,维护方便。
缺点:功能集中在一个工程中,对于大型项目比一开发和维护,项目模块紧耦合,单点容错率低,无法对不同的模块功能进行针对性的优化和水平拓展
所谓垂直应用架构,其实就是把之前的单体应用拆分成多个应用,以提升效率,比如电商系统可以拆分成:电商系统、后台系统、CMS系统。
优点:项目拆分实现了流量分担,解决了并发问题,而且可以针对不同模块进行优化和水平拓展,同时不同的系统之间不会互相影响,提高容错率
缺点:系统之间互相存在,无法进行相互调用,系统之间互相独立,会造成一部分功能的冗余
随着业务的增加,在垂直应用架构中冗余的业务代码越来越多,就需要将冗余的部分抽取出来,统一做成业务层单独处理,变成一个单独的服务,控制层调用不同的业务层服务就能完成不同的业务功能,具体表现就是一个项目拆分成表现层和服务层两个部分,服务层中包含业务逻辑,表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现,这就是分布式架构。
分布式架构中的缺点就是调用复杂,而且当服务越来越多,或者当某一个服务压力过大需要水平拓展和负载均衡,对于资源调度和治理就需要用到治理中心SOA(Service Oriented Architecture)为核心来解决,同时治理中心还可以帮助我们解决服务之间协议不同的问题。
优点:使用治理中心(ESB\dubbo)解决了服务见调用关系的自动调节
缺点:服务间会有依赖关系,一旦某个环节出错会影响较大(服务雪崩),服务关系复杂,运维、测试部署困难。



现实生活中,微服务还是要结合具体的实际场景,根据业务进行拆分,划分出不同的域。这样才能更好的实现微服务,当然,重中之重还是数据表的结构设计,好的表结构那简直就像大楼地基盖平房。所以一定要设计好表结构。