1,consul 服务发现


在使用了几次之后终于感受到了这个系统挺好的了。
在一个小的团队里面,要做服务发现,做的简单高效。
可以直接使用 consul 作为服务发现,服务检查的系统。
不用自己去开发了。真的很方便,只要部署下就可以了。
github 上放了代码,都是很简单的。
https://github.com/freewebsys/grpc-go-demo

2,重新研究consul启动


发现之前是使用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个服务,其中第三个服务端口错误。

func TestRegister(t *testing.T) {fmt.Println("test begin .")config := consulapi.DefaultConfig()//config.Address = "localhost"fmt.Println("defautl config : ", config)client, err := consulapi.NewClient(config)if err != nil {log.Fatal("consul client error : ", err)}//创建一个新服务。registration := new(consulapi.AgentServiceRegistration)registration.ID = Id + "01"registration.Name = "user-tomcat"registration.Port = 8080registration.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 = checklog.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 命令:

# nslookup  user-tomcat.service.freeweb.consul
Server:         10.0.2.15
Address:        10.0.2.15#53Name:   user-tomcat.service.freeweb.consul
Address: 10.0.2.15
Name:   user-tomcat.service.freeweb.consul
Address: 127.0.0.1#也可以ping通了。
# 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。也方便运维。

4,总结


本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/60779640 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

新的技术带来了新的理念。将开发运维变的更加的简单了。
在公司要进行业务拆分的时候能最快的将注册中心,服务发现。
都搭建好,而且还是简单高效的进行rpc开发。

grpc(5):使用grpc+consul 开发服务调用相关推荐

  1. .net core grpc consul 实现服务注册 服务发现 负载均衡(二)

    在上一篇 .net core grpc 实现通信(一) 中,我们实现的grpc通信在.net core中的可行性,但要在微服务中真正使用,还缺少 服务注册,服务发现及负载均衡等,本篇我们将在 .net ...

  2. 深入浅出 gRPC 01:gRPC 服务端创建和调用原理

    目录 1. RPC 入门 1.1 RPC 框架原理 1.2 业界主流的 RPC 框架 1.3 gRPC 简介 1.3.1 gRPC 概览 1.3.2 gRPC 特点 2. gRPC 服务端创建 2.1 ...

  3. SpringCloud(2)--服务调用

    SpringCloud 技术栈 服务注册与发现 EUREKA(停更),Zookeeper,Consul,Nocos 服务调用 RIBBON(NETFLIX网飞), LoadBalancer, FELG ...

  4. .NET Core微服务开发服务间调用篇-GRPC

    在单体应用中,相互调用都是在一个进程内部调用,也就是说调用发生在本机内部,因此也被叫做本地方法调用:在微服务中,服务之间调用就变得比较复杂,需要跨网络调用,他们之间的调用相对于与本地方法调用,可称为远 ...

  5. Dapr + .NET 实战(十二)服务调用之GRPC

    欢迎大家参加4小时Dapr+.NET 5的实战课程 课程链接     https://ke.qq.com/course/4000292?tuin=1271860f 什么是GRPC gRPC 是一种与语 ...

  6. 深入浅出 gRPC 04:gRPC 服务调用原理

    目录 1. 常用的服务调用方式 1.1 同步服务调用 1.2 并行服务调用 1.3 异步服务调用 2. 服务调用的一些误区和典型问题 2.1 理解误区 2.1.1 I/O 异步服务就是异步 2.1.2 ...

  7. 面向.NET开发人员的Dapr——服务调用

    目录: 面向.NET开发人员的Dapr--前言 面向.NET开发人员的Dapr--分布式世界 面向.NET开发人员的Dapr--俯瞰Dapr 面向.NET开发人员的Dapr--入门 面向.NET开发人 ...

  8. Dapr微服务应用开发系列3:服务调用构件块

    题记:这篇开始逐一深入介绍各个构件块,从服务调用开始 原理 所谓服务调用,就是通过这个构件块让你方便的通过HTTP或者gRPC协议同步调用其他服务的方法,这些方法也是通过HTTP或者gRPC来暴露的. ...

  9. grpc调用_使用gRPC和协议缓冲区实现远程过程调用

    grpc调用 RPC简介 ( Introduction To RPC ) Remote procedure call (RPC) architecture is popular in building ...

  10. 深入浅出 gRPC 02:gRPC 客户端创建和调用原理

    目录 1. gRPC 客户端创建流程 1.1 背景 1.2 业务代码示例 1.3 RPC 调用流程 1.3.1 客户端调用总体流程 1.3.2 ManagedChannel 创建流程 1.3.3 Cl ...

最新文章

  1. 选一线一张床还是二线一套房
  2. python 匹配字符串多个_在Python中匹配多个数据集的字符串
  3. 【darknet速成】Darknet图像分类从模型自定义到测试
  4. SQLServer 2014 本地机房HA+灾备机房DR解决方案
  5. 动态规划: 投资分配问题
  6. Java架构学习(三十三)ActivityMQ基础消息中间件概述异步与同步MQ作用MQ件通讯方式MQ应用场景ActivityMQ安装使用ActivityMQ的案例主题和订阅
  7. PS一键磨皮美白扩展插件Delicious Retouch 5.0 汉化集合版 Win/Mac
  8. python结课设计力学方面_课程设计心得
  9. 中国四大名著的文化价值
  10. 关于RPY角的旋转顺序问题
  11. SSH 端口转发与 SOCKS 代理
  12. 请问投稿中要求上传的author_投稿须知Author lnstruction 解读(中)
  13. 不同的丘脑皮层网络动力学与慢性腰痛的病理生理学有关
  14. 使用码云同步谷歌 Chrome 浏览器书签
  15. 华为系统怎么使用小米云服务器,从小米的MIUI换成华为EMUI,使用5个月,憋了一肚子的真心话...
  16. Centos7 -samba服务配置
  17. SpringBoot连接mysql数据,写入数据
  18. 7-111 最大字符-zzuli
  19. 网络嗅探,工具 10 个
  20. 网络安全笔记(Day3)

热门文章

  1. SharePoint 2010 Form 认证 之 配制
  2. 关于ASP.Net的导入导出(6)
  3. 洛谷P1219 八皇后 题解
  4. git 生成ssh key
  5. smarty 对数据库的简单操作。
  6. Windows as a Service(3)——使用SCCM管理Windows10更新
  7. Spark在Ubuntu中搭建开发环境
  8. lucene.net 3.0.3、结合盘古分词进行搜索的小例子(转)
  9. ASP.NET MVC 分部视图
  10. windows server 2008 r2 安装