微服务是一种编程思想,它基于分布式系统开发,把一个项目分成多个细小并能独立运行的服务,但是分这么多的服务会导致以下几个问题。
- 这么多的服务用户要怎么连接。
解决:
- 通过API网关管理服务器,用户只需要通过连接API网关就可以了。 - 这么多的服务器该如何通信。
解决:
同步通信;
- HTTP(Apache HTTP Client)
- RPC (Dubbo,Apache Thrift,gRPC)
异步通信:
- 消息队列(kafka,RabbitMQ,RocketMQ) - 这么多的服务该如何管理。
解决:
服务注册与发现:
基于客户端的服务注册与发现:
- Apache Zookeeper
基于服务端的服务注册与发现:
- Netflix Eureka(游离卡) - 服务器挂掉了怎么办。
解决:- 重试机制
- 服务熔断
- 负载均衡
- 服务降级
- 服务限流