概念

单体应用

单体应用是所有的代码都放在同一个工程中、部署在同一个服务器、同一项目的不同模块不同功能互相抢占资源。
单体1.0

单台服务器的压力扛不住的时候,就要用到负载均衡技术,增加多台服务器来抗压,后端的数据库也可以用主从的方式来增加并发量。
单体2.0

微服务

微服务就是将工程根据不同的业务规则拆分成微服务,部署在不同的服务器上,服务之间相互调用。

微服务的技术选型

Dubbo (阿里巴巴)

Dubbo是阿里开源的一个高性能RPC分布式服务框架,借助zookeeper来实现服务注册和发现。

Spring Cloud

第一代 Spring Cloud Netflix

第二代 Spring Cloud Alibaba

Kubernetes (Google)

Q&A

  • 访问xxxx-dev.qingdao-xx.haier.net
    1. 通过 DNS 解析出*.qingdao-xx.haier.net的 IP 地址(qingdao-xx k8s集群,域名为*.qingdao-xx.haier.net),三次握手建立TCP连接,发送http请求;
    2. 通过集群的负载均衡(ingress-nginx),根据路由规则找到xxxx-dev.qingdao-xx.haier.net所对应的k8s service
    3. 通过kube-proxy,负载均衡到service相应的Pod
  • 访问xxxx.haier.net/api/v1/xx-center/*
    1. 通过 DNS 解析出 xxxx.haier.net 的IP地址,三次握手建立TCP连接,发送http请求;
    2. 通过反向代理,把/api的请求反向代理到API网关服务;
    3. API网关服务根据路由规则,转发到api/v1/xx-center相应的服务。

服务注册与发现

https://zhuanlan.zhihu.com/p/161277955
https://juejin.cn/post/7138975184114941965

API网关

https://zhuanlan.zhihu.com/p/519786231

API网关,是一个系统的后端总入口。

HDS的API网关的实现方式

Golang + Gin + ReverseProxy

负载均衡

微服务多个实例,如何将流量合理的分摊到每个实例上。