当前位置: 首页 > news >正文

智能网站推广软件pc手机模板网站建设

智能网站推广软件,pc手机模板网站建设,瑞诺国际做外贸网站好吗,wordpress对搜索引擎的可见性1 Overview easy解决服务端通信问题#xff0c;同样使用了RPC技术。easy使用的ETCDGRPC#xff0c;直接将它们打包组合在了一起。随着服务发现的成熟#xff0c;稳定#xff0c;简单#xff0c;若是不用#xff0c;甚至你也并不需要RPC来分解你的架构。 GRPC 有默认res…1 Overview easy解决服务端通信问题同样使用了RPC技术。easy使用的ETCDGRPC直接将它们打包组合在了一起。随着服务发现的成熟稳定简单若是不用甚至你也并不需要RPC来分解你的架构。 GRPC 有默认resovler 解决服务发现的方案只需要完成resolverwatch等可以轻易实现RPC的负载均衡。只不过这种只适合对服务器ID信息等不敏感比如说数据服务和业务服务。不关心是哪台服务器完成的只要数据处理完即可。 在游戏的应用场景中登陆你可能使用的http进入游戏用的游戏服务器那么登陆服务需要知道用户在哪台游戏服务器中使用token判定登陆传输用户信息等走RPC通道需要明确知道是哪台服务器。默认的服务发现就不满足我们的需求了。因此我们需要改造下将游戏的这种具有耦合性质的负载也要支持才行。 2 传送门 go get github.com/slclub/easy/rpc rpc/etcd  ETCD简单封装rpc/cgrpc. GRPC 原生服务发现的封装实现以及指定方式负载的服务发现 测试项目地址github.com/slclub/easy/examples/rpc 3 传输协议编码Protobuf 我们直接使用grpc官网的helloworld。我们简单点直接上proto文件的描述语言。致于protoc等工具以及go的依赖proto就不详细赘述了 syntax proto3;option go_package google.golang.org/grpc/examples/helloworld/helloworld; option java_multiple_files true; option java_package io.grpc.examples.helloworld; option java_outer_classname HelloWorldProto;package helloworld;// The greeting service definition. service Greeter {// Sends a greetingrpc SayHello (HelloRequest) returns (HelloReply) {} }// The request message containing the users name. message HelloRequest {string name 1; }// The response message containing the greetings message HelloReply {string message 1; } 4 GRPC服务端 4.1 helloworld 接口 // server is used to implement helloworld.GreeterServer. type hello struct {helloworld.UnimplementedGreeterServer }// SayHello implements helloworld.GreeterServer func (s *hello) SayHello(ctx context.Context, in *helloworld.HelloRequest) (*helloworld.HelloReply, error) {log.Info(Received: %v, in.GetName())return helloworld.HelloReply{Message: Hello in.GetName()}, nil } SayHello接口会自动依据protobuf 生成的helloworld_grpc.pb.go 文件代码去接收客户端来的请求。 4.2 ETCD client初始化 etcd.NewWithOption(option.OptionWith(nil).Default(option.OptionFunc(func() (string, any) {return Endpoints, strings.Split(etcdAddr, ;)})),) etcdAddr 是 用分号链接起来的etcd的监听地址字符串。ETCD 在整个服务发现体系仅仅需要这理论的一行代码足够了。演示项目我们没有配置账号和密码。实际项目需要主要服务安全。 4.3  服务端grpc  第一部分grpc初始化第二部分proto接口注册第三部分就一个函数调用Serv启动服务监听 // New 一个rpc 监听服务server : cgrpc.NewServer(option.OptionWith(cgrpc.Config{PathName: server1,Addr: serverAddr,Namespace: namespace,//TTL: 15,}).Default(option.DEFAULT_IGNORE_ZERO,option.OptionFunc(func() (string, any) {return ID, abluo}),option.OptionFunc(func() (string, any) {return AddrToClient, 127.0.0.1:18080}),))// 绑定业务接口到 rpc服务// 可以被多次使用RegisterService我们用的appendserver.RegisterService(func(server *grpc.Server) {helloworld.RegisterGreeterServer(server, hello{})},)// 监听如果您有主监听那么可以用go 并发运行server.Serv() 其中AddrToClient 是针对游戏服务提供给游戏客户端的监听地址对于grpc来说不是必须的。这里仅仅是从顺便使用grpc 的服务端注册到ETCD中完成游戏端的服务发现。可以做到任何游戏服不停服的扩展性动态添加或减少服务端的机器。 这里我们可以发现使用option.Assignment初始化的优势演示代码的时候不需要写完整的配置参数还能人为控制的保证参数的默认值。处理默认值都是统一的格式流程化代码。 当然option.Assignment是有局限性的仅仅适合服务类的对象或者仅仅LoadOnce的逻辑部分使用。在业务代码不建议使用因使用了reflect反射会性能低下。 4.4 grpc客户端 ETCD初始化;grpc.Client初始化;Client启动我们分开了多了一行启动过程一个函数调用Start();handle 绑定调用接口proto;client.Wait() 为测试而生的函数实际项目中用不到;client.Close() 不严谨的情况可以不用严谨的话在项目工程服务关闭后调用; // plan2 using the default value setting function.etcd.NewWithOption(option.OptionWith(nil).Default(option.OptionFunc(func() (string, any) {return Endpoints, strings.Split(etcdAddr, ;)}),))client : cgrpc.NewClient(option.OptionWith(struct {PathName stringNamespace string}{server1, namespace}))client.Start()// do your thingshandle(client.ClientConn)// just for testclient.Wait()// closeclient.Close() 5 启动 为了启动测试命令随时可以手敲笔者没有将ETCDGRPC地址通过flag传递给应用工程。直接写到代码里了。运行前请下修改代码中的监听地址变量的值。 5.1 启动服务端 $  cd 到 examples/rpc/server  $  go build ./server 5.2 启动客户端 $  cd 到 examples/rpc/client $  go build ./client 6 Output 首先双方通信正常OK。 启动服务后笔者模拟任意一端崩掉用(CTRLC)再启动崩掉的端整体服务立刻回复正常。 其他的测试情况就不一一再往这上面粘贴了。 服务端 断开gprc服务端再启动 客户端 7 总结 构建一个完整架构的游戏服务器仅仅靠服务发现rpc等虽然还不足够。但是这么简单的实现服务端通信还是让人很愉快。后续再有其他的服务组件我们可以一一加入进去。同时给出测试项目。 go讲究毕竟是精简笔者也不是弄个大杂烩而是设计好package需要什么我们就用什么。虽说做不到EASY在手天下我有但是弄一个小体系还是能节省我们很多项目时间。 最后欢迎大家互相交流学习有好东西互相分享下。有兴趣的通许可以通过传送门去github给EASY来个小小的star。因压力测试还不到位不全所以笔者一直没有发布一个Stable版本希望大家谅解。
http://wiki.neutronadmin.com/news/284509/

相关文章:

  • 如何做局域网网站建设wordpress商品导出淘宝
  • 农业信息网站建设天津招聘网人才招聘官网
  • 网站开发市场规模莲都区建设局门户网站
  • 武锡网站建设生购房政策大连网站设计开发
  • 给村里做网站wordpress与drupal对比
  • 深圳做网站乐云seo费用优惠佛山做企业网站的公司
  • 云主机多个网站西安网站策划公司
  • 上海闵行建网站公司wordpress实现翻页效果
  • 环保部网站官网建设项目审批做棋牌网站建设多少钱
  • html个人网站策划书贵州做网站
  • php 网站换空间建筑设计专业的网站
  • 基于mvc的jsp网站开发个人网站网页模板
  • 怎么建视频网站免费的网站建设项目需求分析
  • 网络公司网站源码 网络建设工作室网站模板 织梦广告设计公司源码莱西网站建设哪家好
  • 个人网站如何做淘宝客广西建筑八大员报考官网
  • 正规建网站企业dw自己做网站需要什么
  • 微网站如何做微信支付宝支付宝支付接口网站的性能特点
  • 建设部网站阮建昌公示数字媒体应用 网站开发
  • 免费wap自助建站系统电商软件开发费用
  • wordpress企业网站教程网站增长期怎么做
  • 巩义网站建设wordpress软件网站模板下载失败
  • 昆明市住房和城乡建设局门户网站wordpress 更换中文
  • 购物网站开发公司汽水音乐怎么推广赚钱
  • 芜湖网站制作网站建设续费多少钱
  • 淄博网站公司wordpress 拖拽页面
  • 做页面设计的网站手机免费建站平台下载
  • 公司给别人做的网站违法吗培训机构倒闭
  • 沛县网站上传网站到虚拟主机
  • 白山商城网站建设wordpress 文档工具
  • 制作好的网站昆明网站建设公司哪家口碑好