微服务架构需要解决的问题(笔记)

  1. 客户端如何访问这么多服务: 通过 api 网关解决客户端访问,客户端访问服务器时 先经过api网关,网关再将请求分发到对应的服务
  2. 这么多服务,服务之间如何通信: 1.同步通信: 1.1 RPC : 对内 1.2 Http BIO: 对外 通常用 http的 RestTFul 风格 通信 返回 json数据 封装成对象 2.异步通信: 2.1 消息队列 2.2 AIO模型 异步非阻塞
  3. 如何管理这么多服务: 服务的管理 只管理服务与注册发现 服务器 当服务启动时 进行注册服务--->先请求服务注册与发现 --> 注册服务的ip地址 当订单服务需要通信用户服务时,先请求服务注册与发现获取用户服务器的ip(用户服务的3个ip),轮流请求用户服务(负载均衡)
  4. 服务器挂了 会造成阻塞 必须解决: 服务熔断 : 直接返回结果,不再尝试请求 因为http是同步并阻塞 会一直请求 进入阻塞 服务与注册服务器 的发现功能 发现哪个服务器挂了 删掉这个服务的 ip 再告诉请求这个挂了服务的服务 删掉这个ip 服务降级 : 把服务给到主业务的服务 关闭不是主业务的服务 限流 : 限制访问量

BIO 同步并阻塞 NIO 同步非阻塞 AIO 异步非阻塞

阻塞:没数据来的话函数会卡在那边等数据来 非阻塞:没数据来的话函数会直接返回并告诉你现在没数据 同步:你告诉他要接收数据,然后不管他收没收成功你就在那边等他搞完 异步:你告诉他要接受数据,然后去做其他事,他收完了(或者收失败了)再叫你

经验分享 程序员 微信小程序 职场和发展