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

交通建设门户网站ps设计教程网

交通建设门户网站,ps设计教程网,快站教程,旅行社网站的建设开题报告这篇文章是记录自己查看客户端grpc负载均衡源码的过程#xff0c;并没有太详细的讲解#xff0c;参考价值不大#xff0c;可以直接跳过#xff0c;主要给自己看的。一.主要接口#xff1a;Balancer Resolver1.Balancer定义Resolver定义具体位置为1.grpc源码对解析器(resol…这篇文章是记录自己查看客户端grpc负载均衡源码的过程并没有太详细的讲解参考价值不大可以直接跳过主要给自己看的。一.主要接口Balancer Resolver1.Balancer定义Resolver定义具体位置为1.grpc源码对解析器(resolver)Builder接口有三个结构体进行实现:dns,passthrough,unix。在clientconn.go文件中通过引用包在相应包的初始化方法中进行了注册2.进入internal/resolver/passthrough/passthrough.go文件中init初始化函数中看到了将passthroughBuilder进行了注册。调用了resolver包的Register函数func init() {resolver.Register(passthroughBuilder{}) }3.Register将注册后的结构保存在全局变量m中是一个map。key为Schemevalue为Builder接口。我们看到grpc默认的scheme是passthrough即透传什么也不做package resolverimport (contextnetnet/urlstringsgoogle.golang.org/grpc/attributesgoogle.golang.org/grpc/credentialsgoogle.golang.org/grpc/internal/prettygoogle.golang.org/grpc/serviceconfig )var (// m is a map from scheme to resolver builder.m make(map[string]Builder)// defaultScheme is the default scheme to use.defaultScheme passthrough )// TODO(bar) install dns resolver in init(){}.// Register registers the resolver builder to the resolver map. b.Scheme will be // used as the scheme registered with this builder. // // NOTE: this function must only be called during initialization time (i.e. in // an init() function), and is not thread-safe. If multiple Resolvers are // registered with the same name, the one registered last will take effect. func Register(b Builder) {m[b.Scheme()] b }// Get returns the resolver builder registered with the given scheme. // // If no builder is register with the scheme, nil will be returned. func Get(scheme string) Builder {if b, ok : m[scheme]; ok {return b}return nil }4.再看下passthroughBuilder看到它实现了Buider接口Build方法返回实现Resolver接口的结构passthroughResolver。其中passthroughBuilder用来创建解析器passthroughResolver为创建的解析器package passthroughimport (errorsgoogle.golang.org/grpc/resolver )const scheme passthroughtype passthroughBuilder struct{}func (*passthroughBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) {if target.Endpoint() opts.Dialer nil {return nil, errors.New(passthrough: received empty target in Build())}r : passthroughResolver{target: target,cc: cc,}r.start()return r, nil }func (*passthroughBuilder) Scheme() string {return scheme }type passthroughResolver struct {target resolver.Targetcc resolver.ClientConn }func (r *passthroughResolver) start() {r.cc.UpdateState(resolver.State{Addresses: []resolver.Address{{Addr: r.target.Endpoint()}}}) }func (*passthroughResolver) ResolveNow(o resolver.ResolveNowOptions) {}func (*passthroughResolver) Close() {}func init() {resolver.Register(passthroughBuilder{}) }5.这段代码中返回的resolverBuilder就是从上面找到注册的builderresolver.Get就是1.3中对应的代码7.生成解析器的封装newCCResolverWrapper并调用build将创建解析器这个过程中调用了解析器的start方法这个方法比较重要的是做了两件事情。1.触发选择balancer信号。2.触发状态修改其中有负载均衡即连接的创建上面分别向ccBalancerWrapper的channel中发送了switchToUpdate和ccStateUpdatebalancer选择逻辑baseBalancer会将所有地址都创建一个连接invoke的时候会调用picker选择连接以上路径最终调用这个方法可以看到是轮询使用连接
http://www.tj-hxxt.cn/news/226960.html

相关文章:

  • 机械制造设备类企业网站织梦模板榆林市住房和城市建设局网站
  • 电子商务网站规划建设方案手机优化软件
  • 捷信做单官方网站vc6.0做网站
  • 社交网站模板精美网页设计模板
  • 孝感市门户网站网站备案人授权书
  • 福州市建设厅网站如何构建自己的网站
  • 中小型企业网站模板个人简历模板下载word格式
  • 福田住房和建设局网站官网浙江专业网站seo
  • 网站建设及推广人员网站动态效果怎么做
  • 网站开发 自定义首页显示南京的电商网站设计
  • 中国城乡与建设部网站做家具定制的设计网站
  • dw做的网站链接不会跳转唐山彩钢中企动力提供网站建设
  • 2345电视剧网站免费为何用wdcp建立网站连不上ftp
  • 去哪个网站可以做写手建设网站用什么服务器
  • 网站建设如何搞活动咸阳做网站开发公司哪家好
  • 如何免费制作网站进服务器编辑网站怎么做
  • 分类网站开发漳州网站开发制作棋牌
  • 内江网站怎么做seo美了一站式变美共享平台
  • 网站推广软件工具百度广告推广
  • 建网站首选公司做羞羞的事情的网站
  • 开发网站公司推荐如何建设影视网站首页
  • 做网站建设工资高吗网站结构框架图怎么做
  • 什么建设网站好短视频app开发软件
  • 网站推广策划方案书ps网站首页直线教程
  • 沧浪企业建设网站电话建设三库一平台
  • 湖南长沙网站建设公司电话三个字的洋气商标名字
  • 网站将要准备建设的内容新手做网站视频讲解
  • 网站的建设费用礼品公司网站制作
  • 江宁做网站价格企业网站建设中存在的主要问题会有哪些?
  • 做班级相册网站的目的意义高新区建设局网站