Skip to content

Latest commit

 

History

History
48 lines (35 loc) · 2.59 KB

Zebra-微服务.md

File metadata and controls

48 lines (35 loc) · 2.59 KB

###1.什么是微服务

微服务是一种分布式的架构,它所有的组件(也就是服务)会被部署为单独的应用程序,并通过某种远程访问协议(Rpc/Restful)进行通讯。分布式应用的挑战之一就是如何管理远程服务的可用性和它们的响应。服务可用性是服务消费者连接服务并能够发送请求的能力,服务响应则关注服务的响应时间。

###2.微服务的局限

并不是所有的业务系统都适用于微服务,不能说现在流行这个,我就把公司上上下下几千个系统全部放入Docker,全部都架上微服务的袈裟,你应该静下心来,仔细分析你的商业需求、商业驱动、组织架构和团队技术环境,因为微服务并不适应所有的场景。而且基于RESTful的协议请求,很容易被多次重复调用,此时应考虑加入消息机制,利用消息进行事务的处理以及异步服务的调用,在此需要提醒各位在数据一致性高可用方面做好取舍,准备好一致性的补偿机制。

###3.微服务的好处

打了这么多预防针,你还是跟到了这里,那么我们来谈谈微服务的好处,

  • 应用太大,我们上线一个小功能,并不想再所有程序都打包上线,这很烦,我们需要拆开,拆成单个的服务出来。每个服务都有一个Rpc或者RESTful的Api进行业务驱动,由类似于Spring cloud或者Zookeeper的服务管理者去发现和监听各个服务节点的状态。
  • 拆出来的微服务,就可以交给不同的团队进行开发,维护更加简单,不会因为一个模块上线失败,而整体回滚。
  • 部署方便,Jekens + Docker直接部署,对于前端而言,根本不知道后台什么时候突然部署了1w台服务,用户几乎0察觉,轻松应对秒杀等业务,流量下来之后,随时Stop服务。

###4.微服务的实现

  • 1.网关
    • 采用API的方式,制造一个所有的端都支持的网关,作为唯一的入口,可以提供授权、监控、负载、缓存、静态、返回相应等入口,建议使用RESTfulhttp接口。
    • 网关的作用
      • 提供统一服务入口,让微服务对前台透明
      • 聚合后台的服务,节省流量,提升性能
      • 提供安全,过滤,流控等API管理功能
    • 网关要考虑交互的方式
      • 客户端 1:1 服务端
      • 客户端 1:N 服务端
  • 2.服务发现
  • 3.服务调用
    • 同步调用
      • Rpc
      • Rest
    • 异步调用
      • MQ
  • 4.服务可用
    • 重试
    • 限流
    • 熔断
    • 负载
    • 降级
    • 缓存
  • 5.服务发布
    • Jekins Docker