一.单体架构和微服务架构的比较前端
1.单体架构的优点和不足数据库
单体架构的优点:在项目的初期便于开发、便于测试、便于部署后端
单体架构的不足:设计模式
什么是横向扩展和垂直扩展?缓存
1)横向扩展
也叫 水平扩展
,用更多的节点支撑更大量的请求。 如成千上万的蚂蚁完成一项搬运工做性能优化
2)纵向扩展
又叫 垂直扩展
,扩展一个点的能力支撑更大的请求。如利用1我的的能力,如蜘蛛侠逼停火 服务器
2.什么是微服务架构?网络
微服务架构自己来源于互联网的思路,所以组件对外发布的服务强调了采用HTTP Rest API的方式来进行。架构
将单体应用拆分红多个高内聚低耦合的小型服务,独立部署,能够采用不一样的语言以及存储,每一个小型服务运行在独立进程当中,服务间采用轻量级通讯机制,而非采用进程内调用的方式进行通讯。app
3.微服务架构的优点
2、微服务所要解决的主要问题
1.服务的拆分
2.数据一致性
4.服务治理—服务注册与发现
5.服务网关
它的定义相似于面向对象设计模式中的Facade模式,它的存在就像是整个微服务架构系统的门面同样,全部的外部客户端访问都须要通过它来进行调度和过滤。
由它来实现请求路由、负载均衡、校验过滤等功能,以及与服务治理框架的结合,请求转发的熔断机制、服务的聚合等。
好比将多个服务的数据聚合在一块儿返回给前端
6.可靠性
熔断:是指服务不可用在必定的时间内达到必定的数量,自动关闭该服务的调用开关,直接调用降级逻辑,这样下降资源耗尽的风险
微服务整个系统都须要在咱们的监控体系中,包括注册中心的监控、 服务进程的监控、流量的监控、日志的监控,状态的监控等
好比说在电商app中,咱们没法进行下单操做,在分布式服务架构中 ,日志是散落在多个服务上的,咱们若是说登陆每台服务器进行检索是很是低效的,这就须要咱们进行日志格式的标准化,并利用必定的手段将日志聚合起来进行检索查询,咱们须要将这些检索查询的组件放到共享库当中,或者代码脚手架进行提供,以方便咱们和业务代码进行解耦。
在微服务场景中,一个客户端发起的请求要通过多个服务的调用,咱们不知道该请求经历哪些服务的调用,调用哪些服务出现了问题,每一个服务的输入输出是什么,这都给咱们定位问题带来的困难;除此以外若是一个请求耗时挺长,咱们不知道哪一个服务耗时最长,这就给咱们性能优化带来了困难。随着架构的演进,咱们须要知道服务之间的依赖关系,这就须要咱们的分布式追踪。
3、SOA和微服务的比较
SOA:ESB、SOAP
微服务:轻量级MQ、REST、RPC
SOA:共享数据库
微服务:一服务一数据库
SOA:服务粒度比较粗,多个单体的组合
微服务:粒度更小的服务