【一】什么是微服务

微服务体系

什么是微服务?

什么是单体架构?

  单体架构的问题?  

    1.复杂性高

      1.1 代码难以理解,复用性低

      1.2 难以理解导致代码质量低,复杂性进一步增加

      1.3 代码难以被修改和重构

    2.伸缩性差

      2.1 单体只能按整体横向扩展,无法分模块垂直扩展

      2.2 IO密集型模块和CPU密集型模块无法独立升级和扩容

    3. 可靠性差

      3.1 一个bug有可能引起整个应用的崩溃

    4. 阻碍技术创新

      4.1 受技术栈限制,团队成员使用同一框架和语言,模块得不到拆分,不能使用新的语言和框架

      4.2 升级和变革技术框架变得困难,当有符合业务场景的新技术产生或者新版本时,升级和变革技术框架所带来的重构成本和风险很高

      4.3 想尝试新的语言也变得很困难,因为开发成本的上升,重构和新需求迭代无法协调,所哟最终只能是妥协继续使用原来的框架和语言

什么是服务化?

  服务化就是把传统的单机应用中的本地方法调用,改造成通过接口产生的远程方法调用

  通过服务化,可以解决单体应用膨胀,团队开发耦合度高,协作效率低下的问题

微服务定义

  服务拆分粒度更细

  服务对立部署

  服务对立维护

  服务治理能力要求高

微服务的有点

  易于开发与维护

  独立部署

  伸缩性强

  与组织结构相匹配

  技术异构型

微服务和Docker

服务拆分

  什么时候应该拆分单体应用?

  服务化拆分具体该如何实施呢?

  服务拆分的两种方式:纵向拆分(业务),横向拆分(公共功能,发邮件,文件管理)

 

单体架构--微服务的问题

  如何定义服务

  如何发布和订阅服务

  如何治理服务

  如何定位

  如何监控服务

服务治理

  服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册与发现

  在微服务架构中,过多的服务会出现的问题:

    1. 需要配置N个服务的网络位置,加大配置的复杂性

    2.服务的网络位置变化,都需要改变每个调用者的配置

    3.集群的情况下,难以做负载

  服务注册和发现

    1. 在服务发现框架中,通常都会构建一个注册中心,服务提供者(就是提供服务的一方)按照一定格式的服务描述,向注册中心注册服务,声明自己能够提供哪些服务以及服务的地址是什么,完成服务发布

    2.  服务消费者(就是调用服务的一方)请求注册中心,查询所需要调用服务的地址,然后以约定的通信协议向服务提供者发起请求,得到请求结果后再按照约定的协议解析结果

    3.注册中心的工作流程是:

      服务提供者启动:向注册中心注册自己提供的服务

      消费者启动,向注册中心订阅自己需要的服务

      注册中心返回服务提供者的列表给消费者

      消费者从服务提供者列表中,按照负载均衡算法,选择一台发起请求

Consul 服务发现与配置

 

Node.js的文章,与其相关的
原文地址:https://www.cnblogs.com/boyYu/p/13155166.html