游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

基于知名微服务框架gomicro开发gRPC应用程序

  gomicro是golang的一个微服务框架。
  gomicro各个版本之间的兼容性问题一直被诟病,前几年gomicro更是分化出了两个分支:
  一个延续了gomicro,只不过转到了其公司CEO的个人Github仓库中,访问地址:
  asimgomicro:AGomicroservicesframework(github。com)
  一个转向了云原生方向,名字叫Micro,访问地址:
  micromicro:APIfirstcloudplatform(github。com)
  不过都还是开源的,当前的许可证都是Apache2。0,不是某些人说的不能商用了,当然无法保证以后不会改许可证。
  回到正文,这篇文章将介绍使用gomicro最新版本v4开发gRPC服务的方式。1、安装protoc
  这个工具也称为proto编译器,可以用来生成各种开发语言使用proto协议的代码。
  下载地址:https:github。comprotocolbuffersprotobufreleases
  一般下载最新版本就行,注意要符合自己当前的操作系统。
  解压后里边有个protoc。exe,拷贝到GOPATH的bin目录下,我这里就是C:UsersPC001gobin,PC001是登录当前操作系统的用户名,需要换成你自己的。GOPATH可以通过执行goenv查看到。
  一般都是把GOPATH的bin目录添加到环境变量的PATH变量中,如果没有,请自行添加上。2、安装protoc的gomicro插件
  需要安装两个插件,它们用来生成Golang版本的proto协议代码和gomicro的gRPC代理代码。
  执行如下命令,会在GOPATH的bin目录下生成两个可执行文件:protocgengo。exe和protocgenmicro。exe。goinstallgoogle。golang。orgprotobufcmdprotocgengogoinstallgomicro。devv4cmdprotocgenmicrov43、编写proto文件
  proto文件是符合ProtocolBuffers语言规范的数据交换协议文件,就像以前WebService定义服务时使用的XML文件。现在一般都是用proto3了,这里创建一个名为hello。proto的文件,放到项目的proto目录下:syntaxproto3;optiongopackageproto;packageBusiness;serviceHello{rpcSay(SayRequest)returns(SayResponse);}messageSayResponse{stringMessage1;}messageSayRequest{stringName1;}
  这个协议很简单,有个名字为Hello的服务,提供一个名字为Say的rpc方法,这个方法有输入输出,输入信息中有一个名为Name的参数,输出信息中有一个名为Message的返回值。4、生成gRPC代理代码
  在项目根目录中执行如下命令,会在proto目录下生成两个文件:hello。pb。go和hello。pb。micro。go。protocgoout。gooptpathssourcerelativemicroout。microoptpathssourcerelativeprotohello。proto
  hello。pb。go中是输入输出数据类型的Golang定义,hello。pb。micro。go中是gomicro客户端和服务端的gRPC代理程序。
  也可以将文件生成到别的目录中,比如修改proto文件中gopackage的配置为:optiongopackagebusiness;
  然后执行下面的命令,会生成到项目下的business目录中:protocgoout。microout。protohello。proto
  具体这个命令还有哪些参数,可以执行protochelp去探索下,这里就不罗嗦了。5、编写gRPC服务端程序
  这里先上代码:packagemainimport(contextfmtgrpchelloprotologtimegithub。comasimgomicropluginsservergrpcv4gomicro。devv4gomicro。devv4server)typeHellostruct{}func(sHello)Say(ctxcontext。Context,reqproto。SayRequest,rspproto。SayResponse)error{fmt。Println(request:,req。Name)rsp。MessageHelloreq。Namereturnnil}funcmain(){grpcServer:grpc。NewServer()service:micro。NewService(micro。Server(grpcServer),micro。Name(grpchello。service),micro。Address(0。0。0。0:8001),micro。RegisterTTL(time。Second30),micro。RegisterInterval(time。Second10),)optionallysetupcommandlineusageservice。Init()RegisterHandlersproto。RegisterHelloHandler(service。Server(),Hello{})Runserveriferr:service。Run();err!nil{log。Fatal(err)}}
  整个过程如下:
  先定义一个名为Hello的类型,它去实现hello。pb。micro。go中生成的HelloHandler接口,也就是编写具体的业务实现。
  然后通过grpc。NewServer创建一个gRPC服务器,这里决定gomicro底层通信使用gPRC;
  然后通过micro。NewService创建一个micro服务,这里需要传入上面创建的grpcserver,还要设置服务的名称、监听端口,以及保持服务健康用的TTL和上报周期。gomico当前默认的服务发现机制是mdns,不用额外部署服务发现工具,不过一般只建议在开发环境使用,生产环境建议使用etcd;
  通过上面的步骤对服务进行一些初始化之后,再将Hello类型的实例注册到grpcserver;
  最后启动服务,就可以开始接客了。
  如果直接粘贴这段代码的话,会有很多包没有引用进来,可以通过goget获取这些包,也可以执行命令:gomodtidy来引入需要的包。
  这里边还import了一个grpchelloproto,这个是我这边项目的mod是grpchello,gRPC代理程序的package是proto,如果你的不一样,需要修改下。6、编写gRPC客户端程序
  访问gRPC服务也是通过hello。pb。micro。go中生成的方法,直接上代码:packagemainimport(bufiocontextfmtgrpchelloprotoosgithub。comasimgomicropluginsclientgrpcv4gomicro。devv4)funcmain(){service:micro。NewService(micro。Client(grpc。NewClient()),)service。Init()client:proto。NewHelloService(grpchello。service,service。Client())rsp,err:client。Say(context。TODO(),proto。SayRequest{Name:BOSSMA})iferr!nil{fmt。Println(err)}fmt。Println(rsp)fmt。Println(按回车键退出程序。。。)in:bufio。NewReader(os。Stdin),,in。ReadLine()}
  上面的程序使用了grpc。NewClient,这决定了底层通信采用gRPC;然后再使用生成的代码proto。NewHelloService创建客户端代理,这里指定的服务名字必须是服务端注册的名字;最后使用这个客户端代理调用相应的方法。7、运行程序
  可以使用gorunxxx。go来编译并运行程序。这里为了方便测试,先使用gobuild将它们编译为exe,然后再双击运行。实际运行效果如下:
  以上就是本文的主要内容了,完整代码示例已经上传到Github:https:github。combosimagodemotreemaingomicrogrpchello

怀孕2个月胎儿有多大?怀孕两个月了,此时宝宝还不能叫胎儿,确切的讲此时应该称胚胎。妊娠11周开始才称做胎儿。胚胎用肉眼巳经可以看到了,长约1厘米,重约1克,和一粒蚕豆差不多。头非常大,跟身体直……拔丝红薯怎么做?拔丝地瓜想要做的好吃又漂亮,要注意两点1。炒糖色是否成功!2、整个过程中火候的把控!拔丝地瓜(Thehotcandiedsweetpotatoes)是以地瓜、……同一主机下,相同频率的i513700K实际性能相差多少?Hello,大家好,我是只关注自己测试结果的含量百分百。出这篇文章的原因来自于老是有些人来喜欢拿网络上的一些理论数据来跟人讨论,但是只靠CPUZ一张图,主机硬件配置不提,……世界遗产名录圣路易斯圣路易斯,马拉尼昂,巴西在巴西,联合国教科文组织世界遗产名录中有21个遗址,其中之一是圣路易斯市的建筑群。它的历史始于1612年,当时法国人在圣马可湾(SoMarcos)……这些潜规则你一定要懂得一二1、长时间不联系的朋友,有事直接说事,不要总问别人在不在。不说什么事情,别人怎么回答?万一你借钱怎么办,借钱那肯定不在。2、原则上不行,那就是可以。按道理说可以,那就是不……豪门不同命!C罗助攻,葡萄牙42,垫底队逆袭北京时间9月25日,欧国联小组赛第5轮继续进行,A2组迎来两场焦点战,葡萄牙前往客场挑战捷克,西班牙坐镇主场迎战瑞士。捷克04葡萄牙本场比赛之前,葡萄牙2胜1平1负……慕思床垫失守高端化,假洋牌不吃香了?《拾盐士》出品据《中国睡眠报告2022》调查显示,过去十年中国人入睡时间晚了2小时,睡眠时长减少约1。5小时,目前只有35的人每天能睡够8小时,约15的人有睡眠障碍疾病需……银耳汤有什么药用价值?银耳汤有什么药用价值?银耳又称雪耳、白木耳,做成汤食用具有益气清肠、滋阴润肺、补脾开胃的药用价值,有安眠健胃、补脑、养阴清热的作用。现代研究发现,银耳汤还具有以下功效作用……2021中国十大科学进展发布!2022年2月28日,科学技术部高技术研究发展中心发布2021年度中国科学十大进展。1、火星探测任务天问一号探测器成功着陆火星2021年5月15日7时18分,天问一号探测……有人说人生苦短,何必空留恋,做好自己,活在当下,这句话是不是回答:这句话没有充满负能量,个人觉得说的很有道理。人生苦短,何比空留恋;做好自己,活在当下。这句话对于我们每个人面对人生和生活时;是很值得考量的。大家都知道岁月不饶人,一……你有祛黑头的烦恼吗?inFace超微小气泡清洁仪温润祛黑头不说的个人脸部清洁,相信很多小伙伴都有遇到脸部黑头怎么去除的烦恼吧!说到黑头它就是我们脸部毛孔增生产生的一些米状异物,长时间累积在面部表皮里,日常清理黑头确实不是一件容易的事情,……驴打滚为啥放玉米淀粉?驴打滚为啥要放玉米淀粉?大家好,我是希妈厨房,我的回答是:驴打滚中不一定要放玉米淀粉,但是放了玉米淀粉也有一定作用,想要知道驴打滚中为什么要放玉米淀粉,我们一起来看……
CBA3消息深圳正式完成换帅,曾繁日已离队,哈达迪赛季报销深圳正式完成换帅,曾繁日已离队,哈达迪赛季报销!就在刚才深圳男篮官方正式宣布球队完成换帅,由此前的助理教练以及近几场比赛的代理主教练郑永刚,正式担任球队的主教练,而球队的……米糕粑粑怎么做?原材料:糯米粉600克白糖100克葡萄干150克青丝红丝50克水650克酵母10克制作方法:1。将糯米粉与水、酵母混合搅匀,不能有结团、结疙瘩形象2。将搅拌均匀的米粉糊放……陕西陕北陕南关中,哪个地方最好?陕西、陕北、陕南、关中那个地方最好?首先要说的是陕西是个省,陕北陕南关中是三个地区。要说这三个地区那个好?我们要从经济文化,资源,交通,自然环境这几个方面客观的去看看。……酸辣萝卜条怎么做?酸辣萝卜的做法:1:准备食材,白萝卜,小米辣,葱,姜,大蒜。2:白萝卜洗净切条(也可切片),放入碗中撒适量的盐腌制10分钟杀出水分。3。把腌制好的白萝卜条洗净……AI美人(65)看似外表的冰冷,难掩内心的燥热冷艳女子,是一种独特的女性气质,她们通常不善于表达感情,外表看似冷漠,但内心却充满了深情和敏感。她们独立自主,自信坚强,不轻易被打败。让我们来探讨一下冷艳女子的特点和魅力。……国台15年,龙酒目前值得存酒吗?说到底,还是镇酒别以为广告打的好就好喝但是国台相对于其他网红吹牛逼的镇酒,强太多了自己把握十五年国台,龙酒从酒质来说可以存,但我总觉得它的价格偏高,所以指望它们升值,可能……冬日赏月季花很温暖冬天的暖阳月季花开得温暖灿烂,赏花的人儿很窝心心情很美!看,那姹紫嫣红的月季花正向着我微笑,微微一笑很倾城呀!每一朵都在花枝招展地摇曳,让人心生怜爱!冬天的鸟儿都飞……世界杯前瞻D组法国队国家简介法国队排名FIFA第四,夺冠赔率第二。当然这些数据对于这些顶尖球队来说,一点卵用都没有,尤其在杯赛中。尤其看到6月法国队在欧国联被虐得找不到北的时候,大家都在怀疑……百亿市场遭卡脖子,中国工业软件何时解困?钛媒体深度(图片来源:Unsplash)当美国软件的冷枪打向百亿估值的中国企业,令加快软件国产替代的呼声再起。3月12日,美国设计软件公司Figma发布消息称,由于中国无人机……买小龙虾这样挑,花最少的钱吃最多的肉,简直就是赚到了又到了吃小龙虾的季节!为什么吃小龙虾还得看季节呢?其实一年四季都是可以吃到小龙虾的,但是只有夏天才是小龙虾生长繁殖最旺盛,也是最佳时节,相对于其它季节,这个时候的虾肉更加的嫩滑……爱吃面条的要收藏了,教你炸酱的家庭做法,夏天拌着面条吃特别香爱吃面条的要收藏了,教你炸酱的家庭做法,夏天拌着面条吃特别香。哈喽,大家好。我是大厨江一舟。今天又到了和大家分享美食的时刻了,你准备好了吗?现在外面的天气真的是越来越炎热……夏天,1根萝卜加2个鸡蛋,隔天做一次,相信还有很多人不知有啥导语:夏天,1根萝卜加2个鸡蛋,隔天做一次,相信还有很多人不知有啥用?立夏后,感觉天气变得越来越炎热了,最近发现胃口不大,对于吃饭,还真的不太感兴趣了。这么热的天气,像冷……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网