微服务时代之网关及注册中心高可用架构设计
1. 微服务关系架构图
简要说明:
(1)所有应用或者服务要想对外提供服务(包括网关),必须首先到注册中心进行注册。
(2)所有访问通过服务网关进行访问,然后由服务网关路由到对应服务中心进行交互访问。
2. 网关及注册中心高可用架构图
2.1 springcloud eureka高可用方案
由上图可以看出,注册中心与路由很容易成为单点故障,软件老王以前使用springcloud eureka高可用架构方案:
(1)euraka部署成集群模式,相互注册,通过心跳策略同步注册信息;
(2)客户端注册的时候,可以写多个注册中心地址,假如第一个注册中心出问题,会自动到第二个中心去注册。
defaultZone: http://10.192.168.12:8761/eureka/,http://10.192.168.13:8761/eureka/
当时网关没有做高可用方案。
2.2 网关高可用架构方案
2.2.1 软件老王采用的技术方案是:采用keepalived+nginx实现网关的高可用,架构图如下:
简要说明:
(1)通过nginx来实现gateway集群部署;
(2)通过keepalived虚拟ip,当服务器1宕机后,虚拟ip会自动切换到服务器2上,来保证nginx的高可用。
2.2.2 业务中台实际部署
因服务器资源有限,软件老王目前有3台服务器资源,分别为:10.192.168.11、10.192.168.12、10.192.168.13
简要说明:
网关统一使用vip(10.192.168.21)进行访问,21默认会路由到10.192.168.11服务器上(11出故障的话,会自动谢欢到12服务器上),11上的nginx默认轮询调用gateway服务(11与12上启动了6个服务),进而实现高可用。
2.3 注册中心高可用方案
2.3.1 技术方案
软件老王经过技术选型后,这次的注册中心选择的是阿里巴巴的nacos,nacos官方已经给了高可用部署方案,nacos与cloud的euraka还有一个区别,客户端不能配置两个注册中心,官方给的架构图是:
2.3.2 软件老王实际部署的注册中心(nacos)架构图
其中10.192.168.22为vip,案例演示:gateway默认启动了demo服务(/demo),可进行演示使用。
I’m 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!
原文地址:https://www.cnblogs.com/ruanjianlaowang/p/11542747.html
- 简单易学的机器学习算法——受限玻尔兹曼机RBM
- 博客群发(2)--实现登陆
- 算法——递推算法
- 算法——贝叶斯
- 机器学习算法实现解析——liblbfgs之L-BFGS算法
- 机器学习算法实现解析——libFM之libFM的训练过程之Adaptive Regularization
- 虚拟化平台cloudstack(2)——安装(上)
- 机器学习算法实现解析——libFM之libFM的训练过程之SGD的方法
- 虚拟化平台cloudstack(3)——安装(下)
- 机器学习算法实现解析——libFM之libFM的训练过程概述
- 虚拟化平台cloudstack(4)——几个异常
- Golang语言 xml解析实例
- 机器学习算法实现解析——libFM之libFM的模型处理部分
- Go语言使用protobuf数据通信--师出同门,懂的人理解吧
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一天一大 lee(有序链表转换二叉搜索树)难度:中等-Day20200818
- 一天一大 lee(钥匙和房间)难度:中等-Day20200831
- 一天一大 lee(最短回文串)难度:困难-Day20200829
- 一天一大 lee(预测赢家)难度:中等-Day20200901
- 一天一大 lee(反转字符串中的单词 III)难度:简单-Day20200830
- 一天一大 lee(平衡二叉树)难度:简单-Day20200817
- 一天一大 lee(组合总和)难度:中等-Day20200909
- 一天一大 lee(回文子串)难度:中等-Day20200819
- 一天一大 lee(组合)难度:中等-Day20200908
- es6学习笔记
- 一天一大 lee(图像渲染)难度:简单-Day20200816
- 一天一大 lee(前 K 个高频元素)难度:中等-Day20200907
- 一天一大 lee(二叉树的层次遍历 II)难度:简单-Day20200906
- 一天一大 lee(第k个排列)难度:中等-Day20200905
- 一天一大 lee(二叉树的所有路径)难度:简单-Day20200904