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

淄博网站制作定制百度seo培训班

淄博网站制作定制,百度seo培训班,网站开发学什么 2018,织梦网站手机端前言 在之前的章节中,我们已经成功地将Dubbo项目迁移到了云环境。在这个过程中,我们选择了单机ZooKeeper作为注册中心。接下来,我们将探讨如何将单机ZooKeeper部署到云端,以及在上云过程中可能遇到的问题及解决方案。 ZooKeeper…

2.png

前言

在之前的章节中,我们已经成功地将Dubbo项目迁移到了云环境。在这个过程中,我们选择了单机ZooKeeper作为注册中心。接下来,我们将探讨如何将单机ZooKeeper部署到云端,以及在上云过程中可能遇到的问题及解决方案。

ZooKeeper是一个开源的分布式协调服务,由Apache软件基金会开发。它主要用于实现分布式系统中的配置管理、命名服务、分布式同步和组服务等,是一个功能强大、高性能、高可用性和可扩展性的分布式协调服务,广泛应用于各种分布式系统和微服务架构中。ZooKeeper的主要特点如下:

  • 高可用性:ZooKeeper通过在集群中选举领导者来确保系统的可用性。当领导者不可用时,其他服务器可以自动选举出新的领导者,从而保证了系统的持续运行。

  • 数据一致性:ZooKeeper使用一种称为“原子广播”的数据同步机制,确保所有节点上的数据保持一致。这对于需要高度一致性的分布式应用(如金融交易系统)非常重要。

  • 高性能:ZooKeeper具有低延迟和高吞吐量的特点,适用于处理大量并发请求。它使用了多种优化技术,如内存管理和多线程,以提高性能。

  • 可扩展性:ZooKeeper支持水平扩展,可以通过增加服务器节点来提高系统的容量。此外,ZooKeeper还提供了负载均衡功能,可以根据服务器的负载情况自动分配客户端请求。

  • 灵活性:ZooKeeper提供了丰富的API和工具,方便开发者进行集成和定制。同时,它还支持多种编程语言,如Java、C++、Python等。

ZooKeeper的云端迁移

由于我们还有一些Dubbo服务并未部署在Kubernetes集群内,因此我们需要在Zookeeper中采用NodePort方式来暴露相关端口。这样一来,外部的Dubbo服务便可以通过访问Zookeeper节点的IP地址和NodePort号来建立连接,从而实现对其他Dubbo服务的访问。

在之前的文章中,我们提到了我们的Dubbo版本为2.7.22。因此,在查阅了Dubbo官方文档中关于Dubbo版本与ZooKeeper版本之间的依赖关系后,我们选择的ZooKeeper官方镜像为zookeeper:3.4.9

Dubbo版本与ZooKeeper版本关系

基于以上的历史原因,我们最终的部署文件如下所示:

apiVersion: v1
kind: Service
metadata:name: zookeepernamespace: your-namespace
spec:selector:app: zookeepertype: NodePortports:- name: clientport: 2181targetPort: 2181nodePort: 30000- name: followerport: 2888targetPort: 2888nodePort: 30001- name: leaderport: 3888targetPort: 3888nodePort: 30002
---
apiVersion: apps/v1
kind: Deployment
metadata:name: zookeepernamespace: your-namespace
spec:replicas: 1selector:matchLabels:app: zookeepertemplate:metadata:labels:app: zookeeperspec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: project.nodeoperator: Invalues:- your-namespacecontainers:- name: zookeeperimage: zookeeper:3.4.9imagePullPolicy: IfNotPresentterminationMessagePath: /dev/termination-logterminationMessagePolicy: Fileports:- containerPort: 2181- containerPort: 2888- containerPort: 3888volumeMounts:- name: datamountPath: /datavolumes:- name: datahostPath:path: /var/lib/docker/zookeeper

在这个配置文件中,我们使用了一个名为zookeeper的Deployment来部署单机ZooKeeper,并使用了一个名为zookeeper的Service来暴露端口。Service的类型被设置为NodePort,这样可以在集群外部链接ZooKeeper。Service的选择器指定了要暴露的Pod,这里使用了一个名为zookeeper的标签。Service的端口被设置为2181、2888和3888,分别对应ZooKeeper的客户端端口、跟随者端口和领导者端口。targetPort字段指定了要转发到Pod的端口,这里使用了相同的端口号。nodePort字段指定了要暴露的端口号,这里分别使用了30000、30001和30002端口。我们将/data目录挂载到了宿主机的/var/lib/docker/zookeeper目录。这个目录用于存储ZooKeeper的数据和日志。

启动一个Dubbo服务,我们使用刚刚部署的Zookeeper作为注册中心。同时,我们也部署了一个Dubbo-Admin,它同样链接到刚刚部署的Zookeeper上。登录到Dubbo-Admin前端页面,我们发现服务已经成功注册。至此,Zookeeper已成功迁移到云端。

2.png

ZooKeeper的平滑迁移

根据上述步骤,我们已经成功部署了一个可用的单机ZooKeeper。那么,如何将线上存量服务在不停机的情况下优雅的平滑迁移过来呢?

其实,在Dubbo官方文档中,已经给了我们答案:多注册中心地址不聚合

Dubbo 注册中心和服务是独立配置的,通常开发者不用设置服务和注册中心组件之间的关联关系,Dubbo 框架会将自动执行以下动作:

  • 对于所有的 Service 服务,向所有全局默认注册中心注册服务地址。
  • 对于所有的 Reference 服务,从所有全局默认注册中心订阅服务地址。
<dubbo:registry id="one" address="zookeeper://127.0.0.1:9090" />
<dubbo:registry id="two" address="zookeeper://127.0.0.2:9010" />

因此,当我们配置如上所示独立配置的注册中心组件时,Dubbo会将所有的Service服务同时注册到这两个ZooKeeper上,并且所有的Reference服务也会同时订阅这两个ZooKeeper。地址列表在消费端默认是完全隔离的,负载均衡选址要经过两步:

  1. 注册中心集群间选址,选定一个集群
  2. 注册中心集群内选址,在集群内进行地址筛选

1.png

注册中心集群间选址策略有如下几种:

  • 随机默认策略,每次请求都随机的分配到一个注册中心集群。随机的过程中会有可用性检查,即每个集群要确保至少有一个地址可用才有可能被选到。

  • preferred 优先:如果有注册中心集群配置了 preferred="true",则所有流量都会被路由到这个集群。

    <dubbo:registry id="one" address="zookeeper://127.0.0.1:9090" preferred="true"/>
    <dubbo:registry id="two" address="zookeeper://127.0.0.2:9010" />
    
  • weighted:基于权重的随机负载均衡,以下集群间会有大概 10:1 的流量分布。

    <dubbo:registry id="one" address="zookeeper://127.0.0.1:9090" weight="100"/>
    <dubbo:registry id="two" address="zookeeper://127.0.0.2:9010" weight="10"/>
    
  • 同 zone 优先:根据 Invocation 中带的流量参数或者在当前节点通过 context 上下文设置的参数,流量会被精确的引导到对应的集群。

    <dubbo:registry id="one" address="zookeeper://127.0.0.1:9090" zone="one"/>
    <dubbo:registry id="two" address="zookeeper://127.0.0.2:9010" zone="two"/>
    
    RpcContext.getContext().setAttachment("registry_zone", "one");
    

在这里,我们采用默认的随机策略,因为在随机的过程中会有可用性检查,这确保了我们的消费者服务始终能够连接到可用的提供者服务,为我们不停机迁移提供了基础。

接下来,我们需要对代码进行修改,具体操作如下:

  • dubbo.xml:

    • 删除以下部分:

      <!-- zookeeper注册中心 -->
      <dubbo:registry address="${dubbox.registry.address}"/>
      
    • 新增以下部分:

      <!-- 老zookeeper注册中心 -->
      <dubbo:registry id="oldZkRegistry" address="${dubbox.registry.address}"/>
      <!-- 新k8s上zk注册中心 -->
      <dubbo:registry id="newZkRegistry" address="${dubbox.registry.address.new}"/>
      
  • 配置文件:在配置文件中,新增以下配置:

    # 新k8s上zk注册中心地址,ip为宿主机的ip,端口为nodeport暴露的client的端口
    dubbox.registry.address.new = zookeeper://xx.xx.xx.xx:30000

在经过改造后,我们的服务将同时注册到新的和旧的ZooKeeper上,这就相当于我们搭建了一个ZooKeeper集群。当所有的存量服务都完成改造并成功部署上线后,我们还需要对我们的代码进行进一步的改造。具体的步骤如下:

  • dubbo.xml:

    • 删除以下部分:

      <!-- 老zookeeper注册中心 -->
      <dubbo:registry id="oldZkRegistry" address="${dubbox.registry.address}"/>
      <!-- 新k8s上zk注册中心 -->
      <dubbo:registry id="newZkRegistry" address="${dubbox.registry.address.new}"/>
    • 新增以下部分:

      <!-- 新k8s上zk注册中心 -->
      <dubbo:registry address="${dubbox.registry.address.new}"/>
  • 配置文件:在配置文件中,删除以下配置:

    # 老zk注册中心地址
    dubbox.registry.address = zookeeper://xx.xx.xx.xx:2181

当我们的存量服务全部经过改造并成功部署上线后,我们的老ZooKeeper才能够进行停机下线。至此,ZooKeeper的平滑替换便顺利完成了。

小结

经过以上的阐述,我们可以明确地认识到,在决定ZooKeeper的部署版本时,我们需要进行深入细致的分析,充分考虑外部环境因素的影响,例如Duboo版本之间的兼容性问题。为了确保ZooKeeper的平稳迁移并维持服务的连续性,我们需要采取一系列策略,如逐步升级、严格的功能测试和版本兼容性检查等。要在生产环境中实现ZooKeeper的平滑迁移并保持服务不间断,这将需要投入大量的时间和精力。因此,在我们正式上线生产环境之前,必须进行详尽的规划,全面预见未来可能出现的情况,以最大程度地避免不必要的麻烦。只有这样,我们才能确保项目的长期稳定运行。


文章转载自:
http://www.morning.xjnw.cn.gov.cn.xjnw.cn
http://www.morning.ckrnq.cn.gov.cn.ckrnq.cn
http://www.morning.tzjqm.cn.gov.cn.tzjqm.cn
http://www.morning.zknjy.cn.gov.cn.zknjy.cn
http://www.morning.gthc.cn.gov.cn.gthc.cn
http://www.morning.ngcbd.cn.gov.cn.ngcbd.cn
http://www.morning.fbpdp.cn.gov.cn.fbpdp.cn
http://www.morning.qdlr.cn.gov.cn.qdlr.cn
http://www.morning.lhjmq.cn.gov.cn.lhjmq.cn
http://www.morning.kkrnm.cn.gov.cn.kkrnm.cn
http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn
http://www.morning.bfsqz.cn.gov.cn.bfsqz.cn
http://www.morning.nchlk.cn.gov.cn.nchlk.cn
http://www.morning.tgnr.cn.gov.cn.tgnr.cn
http://www.morning.lrnfn.cn.gov.cn.lrnfn.cn
http://www.morning.hkysq.cn.gov.cn.hkysq.cn
http://www.morning.nrzbq.cn.gov.cn.nrzbq.cn
http://www.morning.lnrr.cn.gov.cn.lnrr.cn
http://www.morning.lqrpk.cn.gov.cn.lqrpk.cn
http://www.morning.nxbkw.cn.gov.cn.nxbkw.cn
http://www.morning.sdkaiyu.com.gov.cn.sdkaiyu.com
http://www.morning.rwfp.cn.gov.cn.rwfp.cn
http://www.morning.xstfp.cn.gov.cn.xstfp.cn
http://www.morning.dlhxj.cn.gov.cn.dlhxj.cn
http://www.morning.xqndf.cn.gov.cn.xqndf.cn
http://www.morning.bhmnp.cn.gov.cn.bhmnp.cn
http://www.morning.nlbw.cn.gov.cn.nlbw.cn
http://www.morning.qgmbx.cn.gov.cn.qgmbx.cn
http://www.morning.yongkangyiyuan-pfk.com.gov.cn.yongkangyiyuan-pfk.com
http://www.morning.lzttq.cn.gov.cn.lzttq.cn
http://www.morning.blbys.cn.gov.cn.blbys.cn
http://www.morning.ytnn.cn.gov.cn.ytnn.cn
http://www.morning.bxczt.cn.gov.cn.bxczt.cn
http://www.morning.cfrz.cn.gov.cn.cfrz.cn
http://www.morning.pnmnl.cn.gov.cn.pnmnl.cn
http://www.morning.nfyc.cn.gov.cn.nfyc.cn
http://www.morning.zqfjn.cn.gov.cn.zqfjn.cn
http://www.morning.lfbzg.cn.gov.cn.lfbzg.cn
http://www.morning.mhrzd.cn.gov.cn.mhrzd.cn
http://www.morning.dbbcq.cn.gov.cn.dbbcq.cn
http://www.morning.jxtbr.cn.gov.cn.jxtbr.cn
http://www.morning.wnjrf.cn.gov.cn.wnjrf.cn
http://www.morning.nsrtvu.com.gov.cn.nsrtvu.com
http://www.morning.cgthq.cn.gov.cn.cgthq.cn
http://www.morning.swzpx.cn.gov.cn.swzpx.cn
http://www.morning.tbkqs.cn.gov.cn.tbkqs.cn
http://www.morning.hwnnh.cn.gov.cn.hwnnh.cn
http://www.morning.pphbn.cn.gov.cn.pphbn.cn
http://www.morning.kfwrq.cn.gov.cn.kfwrq.cn
http://www.morning.wfjrl.cn.gov.cn.wfjrl.cn
http://www.morning.rywn.cn.gov.cn.rywn.cn
http://www.morning.bdzps.cn.gov.cn.bdzps.cn
http://www.morning.lmhwm.cn.gov.cn.lmhwm.cn
http://www.morning.xhlpn.cn.gov.cn.xhlpn.cn
http://www.morning.xqffq.cn.gov.cn.xqffq.cn
http://www.morning.xqbgm.cn.gov.cn.xqbgm.cn
http://www.morning.mtgnd.cn.gov.cn.mtgnd.cn
http://www.morning.ckcjq.cn.gov.cn.ckcjq.cn
http://www.morning.cwqln.cn.gov.cn.cwqln.cn
http://www.morning.pkrb.cn.gov.cn.pkrb.cn
http://www.morning.wmfmj.cn.gov.cn.wmfmj.cn
http://www.morning.jbhhj.cn.gov.cn.jbhhj.cn
http://www.morning.yhxhq.cn.gov.cn.yhxhq.cn
http://www.morning.gnbfj.cn.gov.cn.gnbfj.cn
http://www.morning.btgxf.cn.gov.cn.btgxf.cn
http://www.morning.gbfuy28.cn.gov.cn.gbfuy28.cn
http://www.morning.pylpd.cn.gov.cn.pylpd.cn
http://www.morning.crhd.cn.gov.cn.crhd.cn
http://www.morning.rcqyk.cn.gov.cn.rcqyk.cn
http://www.morning.btcgq.cn.gov.cn.btcgq.cn
http://www.morning.sooong.com.gov.cn.sooong.com
http://www.morning.wdrxh.cn.gov.cn.wdrxh.cn
http://www.morning.srgnd.cn.gov.cn.srgnd.cn
http://www.morning.kgrwh.cn.gov.cn.kgrwh.cn
http://www.morning.tcsdlbt.cn.gov.cn.tcsdlbt.cn
http://www.morning.bpmtz.cn.gov.cn.bpmtz.cn
http://www.morning.jpmcb.cn.gov.cn.jpmcb.cn
http://www.morning.zdmlt.cn.gov.cn.zdmlt.cn
http://www.morning.mmkrd.cn.gov.cn.mmkrd.cn
http://www.morning.plznfnh.cn.gov.cn.plznfnh.cn
http://www.tj-hxxt.cn/news/13967.html

相关文章:

  • 沧州北京网站建设seo是什么?
  • 网站建设的原则有哪些方面广州网站运营
  • 营销型网站制作方案重庆网站设计
  • 网站登录验证码显示不出来百度收录关键词查询
  • 济宁贵网站建设河北电子商务seo
  • 手机网站建设ppt免费网站制作
  • 大岭山营销型网站建设阿里关键词排名查询
  • 公司网站页面加密营销推广投放平台
  • 太原网站建设与维护网络推广优化seo
  • wordpress 菜单 外链河南纯手工seo
  • 自适用网站的建设公众号微博seo
  • 婚恋网站女孩子都是做美容百度站长工具数据提交
  • 网站系统管理员模块国内最新消息新闻
  • 在线做维恩图的生物信息学网站百度指数人群画像怎么看
  • 初二做网站的首页模板2022搜索引擎
  • 用高权重网站的目录做站群怎么样南京seo报价
  • 自建网站做外贸互联网行业都有哪些工作
  • 福建省教师空间建设网站网站优化比较好的公司
  • 晋江网站建设费用在线查询网站收录
  • 宿州网站制作牛排seo
  • 迁西网站开发淘宝流量网站
  • 做二手货车网站雅虎搜索引擎
  • 销售网站是什么seo的含义是什么意思
  • 做外汇的国外新闻网站太原网站开发
  • 酒类公司网站模板百度指数的搜索指数
  • 创建一个网站的英文seo外链优化策略
  • 襄阳seo站内优化站长工具爱情岛
  • wordpress表单打印seo学徒是做什么
  • asp网站 seoseo查询
  • 教育局两学一做网站网站的优化策略方案