微服务


Docker+k8s微服务

  • 什么是软件架构?

    软件架构是在软件内部,经过综合各种因素的考量、权衡,选择特定的技术,将系统划分成不同的部分并使这些部分相互分工,彼此协作,为用户提供需要的价值。

  • 什么是微服务?

    使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程中,一般采用轻量级的通讯机制互联,并且它们可以通过自动化的方式部署。

    特点:单一职责;轻量级通信(语言无关、平台无关);隔离性;有自己的数据;技术多样性。

  • 什么是单体架构?

    功能、业务集中在一个发布包里,部署运行在同一进程中。

    优点:易于开发、易于部署、易于测试、易于水平伸缩。

    缺点:代码膨胀,难以维护;创新困难;构建、部署成本大;可扩展性差。

  • 微服务之间如何通讯?

    从通讯模式角度考虑:

    一对一 一对多
    同步 请求响应模式,最常见
    异步 通知/请求异步响应 发布订阅/发布异步响应

    从通讯协议角度考虑:

    • REST API
    • RPC:Dubbo/Dubbox、Thrift、Motan、Grpc
    • MQ
  • RPC框架要向调用方屏蔽各种复杂性,要向服务提供方也屏蔽各类复杂性:

    • 调用方感觉就像调用本地函数一样
    • 服务提供方感觉就像实现一个本地函数一样来实现服务
  • Dubbo的架构为:

  • Motan

  • Thrift

  • Grpc

    RPC对比 Dubbo Motan Thrift Grpc
    开发语言 Java Java 跨语言 跨语言
    服务治理 χ χ
    多种序列化 只支持thrift 只支持protobuf
    多种注册中心 χ χ
    管理中心 χ χ
    跨语言通讯 χ χ
    整体性能 3 4 5 3
  • 服务发现

    • 传统服务

    • 微服务的客户端发现

    • 微服务的服务端发现

  • 流行的服务编排工具:Mesos、Docker Swarm、Kubernetes。

  • Spring Cloud vs Spring Boot:

    • Spring Boot意在简化,是一种开发、配置风格。
    • Spring Cloud意在简化分布式,是功能的集合,风格的统一。
  • Spring Cloud核心组件:

    • Netflix Eureka 服务发现组件
    • Netflix Ribbon 客户端负载均衡组件
    • Netflix Hystrix 容错组件
    • Netflix Zuul 服务网关
    • Spring Cloud Config 分布式配置

文章作者: 不二
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 不二 !
 上一篇
Tmux Tmux
Tmux¶ 安装¶ sudo pacman -S tmux 使用¶ 创建session:tmux new -s session_name。 直接退出在终端输入exit即可。
2019-08-02
下一篇 
Python OOP Python OOP
Python面向对象编程¶ class ClassName(继承的类名): def __init__(变量): self.类内变量=变量 没有合适的继承类,就使用object类,这是所有类最终都会继承的类。创建实
2019-07-17
  目录