微服务概览

微服务架构遇到的问题

  1. 客户端如何访问这么多服务
    API 网关
  2. 服务与服务直接如何通信
    • 同步通信
      HTTP:Apache Http Client
      RPC:Dubbo,Apache Thrift
    • 异步通信
      消息队列:kafka,RabbitMQ,RocketMQ
  3. 这么多服务如何管理
    • 服务治理
      • 服务注册与发现
        • 基于客户端的服务注册与发现:Apache Zookeeper
        • 基于服务端的服务注册与发现:Netflix Eureka
  4. 服务挂了怎么办
    • 重试机制
    • 服务熔断
    • 服务降级
    • 服务限流

一、三层架构 + MVC

使用架构是为了解耦

二、开发框架

Spring

  • Ioc AOP
  • 是一个轻量级的 JavaEE 开源框架,主要是为了解决企业级开发的复杂度(耦合度)问题
  • 使用 Spring 容器来统一管理
  • 但使用 Java 开发仍然笨重

Spring Boot

新一代 JavaEE 开发标准,开箱即用

三、微服务架构

更好的进行分布式系统开发,拆分单体应用,将一个应用拆分成多个服务,每一个服务都是可以独立运行的项目

分布式开发遇到的问题

  1. 客户端如何访问这么多服务
  2. 这么多服务如何治理
  3. 服务与服务直接如何通信
  4. 服务挂了怎么办

四、解决方案

Spring Cloud,是一套生态,是为了解决微服务架构遇到的问题,使用 Spring Cloud,必须基于 Spring Boot

1. Spring Cloud Netflix

  • 客户端如何访问这么多服务
    • API 网关:Zuul 组件
  • 这么多服务如何治理
    • 服务注册与发现:Eureka
  • 服务与服务直接如何通信
    • Feign,是基于 Http Client的,所以是基于 Http 的通信方式:同步并阻塞
  • 服务挂了怎么办
    • 熔断机制:Hystrix

2. Apache Dubbo Zookeeper

  • 客户端如何访问这么多服务
    • API 网关:没有,找第三方
  • 这么多服务如何治理
    • 服务注册与发现:Zookeeper
  • 服务与服务直接如何通信
    • Dubbo 是一个高性能的 Java RPC 通信框架
  • 服务挂了怎么办
    • 熔断机制:没有,借用 Hystrix

3. Spring Cloud Alibaba

没有修不好的电脑
原文地址:https://www.cnblogs.com/duniqb/p/12702457.html