grpc(5):使用grpc+consul 开发服务调用
在使用了几次之后终于感受到了这个系统挺好的了。
在一个小的团队里面,要做服务发现,做的简单高效。
可以直接使用 consul 作为服务发现,服务检查的系统。
不用自己去开发了。真的很方便,只要部署下就可以了。
github 上放了代码,都是很简单的。
https://github.com/freewebsys/grpc-go-demo
发现之前是使用dig 进行操作的,因为consul官方网站也是推荐使用的。
但是其实可以使用ping ,nslookup 也是一样的。
但是需要修改consul的端口。
consul agent -dev -ui -server -node=consul-dev -client=10.0.2.15 -dns-port=53 -domain=freeweb.consul
-dns-port=53 是将consul伪装成一个dns服务器。
-domain=freeweb.consul 是设置自己域。
这样就可以伪装成一个dns服务器了。
有些时候觉得一个服务发现还要dns,感觉上多重啊。
感觉上和dubbo的服务比起来好奇怪啊。
但是正是因为这个dns才使得服务发现变的很简单了。
并且使用dns也非常符合运维同学的胃口。
他们也有很多办法保证dsn没有问题。
使用go 创建 3个服务,其中第三个服务端口错误。
registration.Tags = []string{"group:user-tomcat-01"} registration.Address = "127.0.0.1" //增加check。 check := new(consulapi.AgentServiceCheck) check.HTTP = fmt.Sprintf("http://%s:%d%s", registration.Address, registration.Port, "/check") //设置超时 5s。 check.Timeout = "5s" //设置间隔 5s。 check.Interval = "5s" //注册check服务。 registration.Check = check log.Println("get registration : ", registration) err = client.Agent().ServiceRegister(registration) if err != nil { log.Fatal("register server error : ", err) //设置第二个对象。注册两个tomcat。 registration.ID = Id + "02" registration.Name = "user-tomcat" registration.Address = "10.0.2.15" registration.Tags = []string{"group:user-tomcat-02"} log.Println("get registration : ", registration) err = client.Agent().ServiceRegister(registration) if err != nil { log.Fatal("register server error : ", err) //设置第3个对象。注册两个tomcat。 registration.ID = Id + "03" registration.Name = "user-tomcat" registration.Address = "10.0.2.16" registration.Tags = []string{"group:user-tomcat-03"} check.HTTP = fmt.Sprintf("http://%s:%s%s", registration.Address, "8083", "/check") log.Println("get registration : ", registration) err = client.Agent().ServiceRegister(registration) if err != nil { log.Fatal("register server error : ", err) }
然后配置dns服务器:
/etc/resolv.conf 中配置了多个 nameserver:
nameserver 10.0.2.15
在使用nslookup 命令:
# ping user-tomcat.service.freeweb.consul PING user-tomcat.service.freeweb.consul (10.0.2.15) 56(84) bytes of data. 64 bytes from localhost.localdomain (10.0.2.15): icmp_seq=1 ttl=64 time=0.008 ms 64 bytes from localhost.localdomain (10.0.2.15): icmp_seq=2 ttl=64 time=0.028 ms
就可以发现只有2个tomcat服务了。
3,一个简单的grpc+consul架构
一个简单的grpc + consul 组成的架构就做好了。
服务的注册,发现使用 consul,因为consul 自带check检查。
如果服务没有了。自动会将服务摘除掉。
服务rpc框架使用grpc,服务只是在每次链接的使用访问下consul的dns服务。
连接上了之后 就是http2 二进制传输了,那个使用的是grpc的事情了。
同时也方便开发了,配置好了dns就可以直接使用域名进行访问了。
开发 运维也超级方便了。并且consul 也支持集群。
dns服务器也可以配置多个consul。也方便运维。
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/60779640 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys
新的技术带来了新的理念。将开发运维变的更加的简单了。
在公司要进行业务拆分的时候能最快的将注册中心,服务发现。
都搭建好,而且还是简单高效的进行rpc开发。
gRPC(一)入门:什么是RPC? RPC是一种方法,而HTTP是一种协议。两者都常用于实现服务,在这个层面最本质的区别是RPC服务主要工作在TCP协议之上(也可以在HTTP协议),而HTTP服务工作在HTTP协议之上。由于HTTP协议基于TCP协议,所以RPC服务天然比HTTP更轻量,效率更胜一筹。
5分钟学会 gRPC(中) 我猜测大部分长期使用 Java 的开发者应该较少会接触 gRPC,毕竟在 Java 圈子里大部分使用的还是 Dubbo/SpringClound 这两类服务框架。 我也是近段时间有机会从零开始重构业务才接触到 gRPC 的,当时选择 gRPC 时也有几个原因
5分钟学会 gRPC(下) 我猜测大部分长期使用 Java 的开发者应该较少会接触 gRPC,毕竟在 Java 圈子里大部分使用的还是 Dubbo/SpringClound 这两类服务框架。 我也是近段时间有机会从零开始重构业务才接触到 gRPC 的,当时选择 gRPC 时也有几个原因
5分钟学会 gRPC(上) 我猜测大部分长期使用 Java 的开发者应该较少会接触 gRPC,毕竟在 Java 圈子里大部分使用的还是 Dubbo/SpringClound 这两类服务框架。 我也是近段时间有机会从零开始重构业务才接触到 gRPC 的,当时选择 gRPC 时也有几个原因
相关文章
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序 新的机器翻译服务
- 发现Vs2010中对于开发者最实用的一个服务模块(开发任务管理)!
- 微服务:监控体系,容器监控
- ZooKeeper开发分布式系统,动态服务上下线感知
- 构建基于SpringBoot2和Dubbo2.7的微服务应用开发框架
- Laravel开发:Laravel核心——Ioc服务容器
- 【妙用WebView】鸿蒙元服务中如何使用Java Script的API创建地图
- 华为快应用接入广告服务开发指导
- 超简单集成华为 HMS MLKit 机器学习服务:银行卡识别 SDK,一键实现银行卡绑定
- 老外的项目开发在线服务网站资源
- 《微软云计算Windows Azure开发与部署权威指南》——6.7 AppFabric服务总线REST的服务开发
- 《微软云计算Windows Azure开发与部署权威指南》——6.8 AppFabric服务总线的多播服务开发
- 《IT运维之道》——3.2 IT运维服务的原则
- Linux集群配置ntp时间同步服务
- SpringCloud Nacos使用和配置,SpringCloud Nacos 服务注册中心配置使用
- JBoss EAP应用服务器部署方法和JBoss 开发JMS消息服务小例子
- 2016年成熟亚太地区公共云服务市场规模将达到81亿美元
- 大魔王Kim Dotcom:云存储服务 我又回来了
- HarmonyOS应用/服务开发流程详解
- 【HMS】地图服务我的位置定位问题
- 鸿蒙开发实例|分布式文件服务
- 鸿蒙开发实例 | 鸿蒙原子化服务卡片开发完美体验
- 鸿蒙开发实例|分布式文件服务
- 线上服务 静态html CMS 发布rsync 同步
- Re:从 0 开始的微服务架构--(三)微服务架构 API 的开发与治理--转
- 应用华云对象存储服务实现网站存储的平滑迁移实践
- OA系统选型时这些OA服务需考虑
- Docker搭建mysql服务