上面是Apoll的部署架构图
1)Client和Portal都是通过域名访问Nginx LB,Nginx LB根据请求url喝负载均衡找到一台Meta Server;
2)Meta Server暴露了3个http接口给Client和Portal,分别是发现Config Service、Admin Service、Meta Server;
3)Eureka是默认的注册中心,可以替换成比如zk;
4)Meta Server可以想象成是注册中心的客户端,提供标准服务发现接口给Client和Portal,虽然默认是和Config Service一起部署,但是也可以修改源码分开独立部署;
5)Meta Server是集群无状态部署的,Client和Portal怎么发现呢?答案是通过统一的域名访问Nginx LB;
6)Portal为了实现高可用,一般集群部署,浏览器怎么访问其中一个Portal呢?答案是通过统一的域名访问Nginx LB;
7)Meta Server和Portal都是集群部署,并且都需要配置在Nginx LB;
8)为什么Meta Server和Config Service默认部署在一个JVM进程呢?其实仅仅是一种方案而已;
8)为什么Eureka和Config Service默认部署在一个JVM进程呢?其实仅仅是一种方案而已;
9)在不考虑配置修改的情况下,现在所有模块都独立部署,分别有10个Meta Server,20个Config Service,20个Admin Service,5个Eureka,1个Nginx LB集群,那么这20个Config Service和20个Admin Service都需要注册在Eureka上,10个Meta Server需要配置在Nginx LB上,每个Meta Server都需要配置5个Eureka的地址,其实SpringCloud已经提供了统一访问服务注册发现的接口,Meta Server正是用这个接口屏蔽了不同注册中心的差异;