微服务时代之网关相关技术选型及部署(nacos+gateway)
1.场景描述
因要用到微服务,关于注册中心这块,与同事在技术原型上做了讨论,初步定的方案是使用:阿里巴巴的nacos+springcloud gateway,下面表格是同事整理的注册中心对比,以前用的springcloud的eureka作为注册中心(springcloud-高可用部署),与eurka相比,这次之所以用阿里的nacos,其中还有一个主要的原因就是nacos集成了动态加载,不用重启网关,动态加载服务配置等。
注册中心对比:
| Feature | Zookeeper | Eureka | Consul | Etcd | Nacos |
|---|---|---|---|---|---|
| 服务健康检查 | (弱)长连接,keepalive | 可配支持 | 服务状态,内存,硬盘等 | 连接心跳 | 心跳/自定义 |
| 多数据中心 | — | — | 支持 | — | 支持 |
| kv存储服务 | 支持 | — | 支持 | 支持 | 支持 |
| 一致性 | paxos | — | raft | raft | raft |
| CAP定理 | CA | AP | CA | CP | AP |
| 使用接口(多语言能力) | 客户端 | http(sidecar) | 支持http和dns | http/grpc | dns/http/rpc |
| watch支持 | 支持 | 支持 long polling/大部分增量 | 全量/支持long polling | 支持 long polling | 全量/支持long polling |
| 自身监控 | — | metrics | metrics | metrics | metrics |
| 安全 | acl | — | acl /https | https支持(弱) | acl /https |
| Spring Cloud集成 | 已支持 | 已支持 | 已支持 | 已支持 | 已支持 |
推荐使用Nacos>Consul>Etcd>Eureka>Zookeeper
Nacos为springcloudalibaba全家桶组件,适合使用dubbo作为springcloud的rpc服务接入。
2. nacos简要介绍
nacos是阿里巴巴的开源项目,今年初发布的版本已经达到生产等级,有中文文档和英文文档,社区非常活跃。
关键特性:

有兴趣的童鞋可以去看下,官网地址:https://nacos.io/zh-cn/index.html
3.部署及说明
这几天把官网文档过了一遍,部署了个基础的demo版本,介绍下。
3.1 部署说明
软件老王用了6台虚拟机:
(1)11服务器,部署了springcloud gateway,对外统一提供服务;
(2)12和13服务器,部署了nacos,互为注册,可水平扩展,对外提供服务注册、配置注册等;
(3)14服务器,部署了producer(服务提供方),部署了两个实例;
(4)15服务器,部署了consumer(服务调用方,软件老王),部署了两个实例;
(5)16服务器,测试了下动态配置,可忽略;
3.2 架构图

3.3 架构图详细说明
3.3.1 nacos注册中心及配置中心。
nacos自带了控制台,访问地址:http://10.192.168.12:8848/nacos或者http://10.192.168.13:8848/nacos
用户名:nacos; 密码:nacos;
登录成功后如下图:

主要有三大功能:
(1)注册中心节点列表,这里显示的nacos注册中心,可水平扩展,部署多台,这里部署了两台,分别为12与13服务器。
(2)服务管理,启动了3个服务,分别为网关、服务提供者(2个实例)、服务消费者(2个实例)。

(3)配置管理,这里配置了两个,第一个是测试用的,测试了动态获取,第二个是11服务器上springcloud gate的配置文件。

3.3.2 访问说明
(1)Gateway访问地址:
http://10.192.168.11:7000/producer/getpinfo
说明:10.192.168.11:7000为网关地址,producer为注册中心服务名称,getpinfo为具体服务。
(2)服务提供者地址:
http://10.192.168.14:7001/getpinfo,http:/10.192.1681.14:7001/getpinfo,
15的服务调用方,就是通过rest调用,跟直接从网关调用一样,软件老王就不啰嗦了。
(3)nacos地址:
http://10.192.168.12:8848/nacos,http:/10.192.1681.13:8848/nacos
3.4 写在最后
目前nacos还处于快速迭代阶段,不管是版本还是功能都还稍微有点乱,毕竟去年才开源,还是有些坑要踩的,软件老王认为还是要一颗红心两手准备的。
I’m 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!
微服务时代之网关相关技术选型及部署(nacos+gateway)的更多相关文章
- Aibabelx-shop 大型微服务架构系列实战之技术选型
一.本项目涉及编程语言java,scala,python,涉及的技术如下: 1.微服务架构: springboot springcloud mybatisplus shiro 2.全文检索技术 sol ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型
笔记 2.技术选型和学后水平 简介:课程所需基础和技术选型讲解,学完课程可以到达怎样的程度, 1.IDEA JDK8 Maven SpringBoot基础 Linux 2.理 ...
- 一站式入口服务|爱奇艺微服务平台 API 网关实战 原创 弹性计算团队 爱奇艺技术产品团队
一站式入口服务|爱奇艺微服务平台 API 网关实战 原创 弹性计算团队 爱奇艺技术产品团队
- 微服务时代之2017年五军之战:Net PHP谁先死
其实我一直是个懒人,开博也有好几年了,但是一直懒得写文章,主要怕打字麻烦, 手机都是用讯飞语音输入的, 可惜博客里面很多专业性的词语,用讯飞也不大好,另外无论在家还是在公司,开个语音一本正经的叽叽叽, ...
- .NET CORE微服务中CONSUL的相关使用
.NET CORE微服务中CONSUL的相关使用 1.consul在微服务中的作用 consul主要做三件事:1.提供服务到ip的注册 2.提供ip到服务地址的列表查询 3.对提供服务方做健康检查(定 ...
- AspNetCore微服务下的网关-Kong(一)
Kong是Mashape开源的高性能高可用API网关和API服务管理层.它基于OpenResty,进行API管理,并提供了插件实现API的AOP.Kong在Mashape 管理了超过15,000 个A ...
- 分布式架构和微服务CI/CD的范本技术解读
随笔分类 - 分布式架构--http://www.cnblogs.com/hujihon/category/858846.html (ZooKeeper.activemq.redis.kafka)的分 ...
- .net core 微服务之Api网关(Api Gateway)
原文:.net core 微服务之Api网关(Api Gateway) 微服务网关目录 1. 微服务引子 2.使用Nginx作为api网关 3.自创api网关(重复轮子) 3.1.构建初始化 3.2. ...
- SOA与ESB,微服务与API网关
SOA与ESB,微服务与API网关 SOA: ESB: 微服务: API网关: 参考资料: 1.漫画微服务,http://www.sohu.com/a/221400925_100039689 2.SO ...
随机推荐
- Web前端三大框架_angular.js 6.0(二)
Web前端三大框架_angular.js 6.0(一) 需要视频教程,看头像昵称处 一.Angular 6.0 1.1样式 html中引入样式:内嵌式,外链式,行内式. ng6中组件引入样式的方式也 ...
- Linux学习笔记07之shell
shell从广义上分为两类: GUI:GNOME KDE XFACE等 CLI:sh csh bash shell启动:当用户登录完成后,系统会自动启动shelll程序 进程:应用程序的副本,用PID ...
- AI中台——智能聊天机器人平台的架构与应用(分享实录)
内容来源:宜信技术学院第3期技术沙龙-线上直播|AI中台——智能聊天机器人平台 主讲人:宜信科技中心AI中台团队负责人王东 导读:随着“中台”战略的提出,目前宜信中台建设在思想理念及架构设计上都已经取 ...
- win10教育版激活错误:在运行 Microsoft Windows 非核心版本的计算机上,运行"slui.exe ...”
折腾了一天,最终轻松解决,先启用Software Protection服务,在激活(密钥或者工具都行). PS:但是这样还是无法解决Software Protection自动停止的问题,这个可以参考网 ...
- c#小灶——注释和代码规范
为什么要写注释? 早上我写完了代码,我和我的朋友们都能看懂,到了晚上,我还能看懂,一周后,就只有上帝能看懂了…… 将来我们写的代码量是很大的,代码又不像我们自然语言这么好理解,可能过段时间我们就不认识 ...
- MyBatis之foreach
foreach foreach 元素是非常强大的,它允许你指定一个集合,声明集合项和索引变量,它们可以用在元素体内.它也允许你指定开放和关闭的字符串,在迭代之间放置分隔符.这个元素是很智能的,它不会偶 ...
- 使用Typora编写博客并发布
前言 用CSDN写了一段时间,广告漫天飞舞.... 于是在博客园申请了一个账号,然后看见markdown编辑页面的第一眼: 再见^_^ 搜索一波,凭着博客园强大的生态,30多万的用户,第三方的支持应接 ...
- 通过wireshark学习Traceroute命令和mtr(UDP,ICMP协议)
traceroute: 通过TTL限定的ICMP/UDP/TCP侦测包来发现从本地主机到远端目标主机之间的第三层转发路径.用来调试网络连接性和路由问题. mtr: traceroute的一个变种,能根 ...
- Redis——发布和订阅
发布与订阅(又称pub/sub),订阅者(listener)负责订阅频道(channel),发送者(publisher)负责向频道发送二进制字符串消息(binary string message).每 ...
- Java——数据结构(链表)
链表,可扩展长度,泛型. public class Link { Node header = null; //头结点 int length;//当前链表长度 class Node { Node nex ...