微服务
概念
单体应用
单体应用是所有的代码都放在同一个工程中、部署在同一个服务器、同一项目的不同模块不同功能互相抢占资源。
单台服务器的压力扛不住的时候,就要用到负载均衡技术,增加多台服务器来抗压,后端的数据库也可以用主从的方式来增加并发量。
微服务
微服务就是将工程根据不同的业务规则拆分成微服务,部署在不同的服务器上,服务之间相互调用。
微服务的技术选型
Dubbo (阿里巴巴)
Dubbo是阿里开源的一个高性能RPC分布式服务框架,借助zookeeper来实现服务注册和发现。
Spring Cloud
第一代 Spring Cloud Netflix
第二代 Spring Cloud Alibaba
Kubernetes (Google)
Q&A
- 访问xxxx-dev.qingdao-xx.haier.net
- 通过 DNS 解析出
*.qingdao-xx.haier.net
的 IP 地址(qingdao-xx k8s集群,域名为*.qingdao-xx.haier.net),三次握手建立TCP连接,发送http请求; - 通过集群的负载均衡(ingress-nginx),根据路由规则找到
xxxx-dev.qingdao-xx.haier.net
所对应的k8s service
; - 通过
kube-proxy
,负载均衡到service
相应的Pod
。
- 通过 DNS 解析出
- 访问xxxx.haier.net/api/v1/xx-center/*
- 通过 DNS 解析出
xxxx.haier.net
的IP地址,三次握手建立TCP连接,发送http请求; - 通过反向代理,把
/api
的请求反向代理到API网关服务; - API网关服务根据路由规则,转发到
api/v1/xx-center
相应的服务。
- 通过 DNS 解析出
服务注册与发现
https://zhuanlan.zhihu.com/p/161277955
https://juejin.cn/post/7138975184114941965
API网关
https://zhuanlan.zhihu.com/p/519786231
API网关,是一个系统的后端总入口。
HDS的API网关的实现方式
Golang + Gin + ReverseProxy
负载均衡
微服务多个实例,如何将流量合理的分摊到每个实例上。