开发的服务集群部署方案,以etcd为基础(java)
当前有很多服务集群部署,但是对于我们自己开发的服务系统怎么样能够解决部署问题,对大家很麻烦和笨重.
首先,我想说对于我们国内,小公司小系统比较多。大型系统毕竟少数,向阿里云看齐的不多。其实所谓的需要集群部署,可能一般需要部署3个节点就差不多了。这么小的集群,采用企业级的大家伙是完全没有必要的。而且维护成本高,隔离不出来都很麻烦。也就是我们用了牛刀。
当然对于学习来说,了解企业级的大家伙是很有必要的,它的高大尚给我们很多空间,能够学习,能够增加饭碗的可靠。对于真实的部署却很难用到,或者说发挥其性能。说个简单例子,我们很多人都已经在使用zookeeper,但是这个真实的情况是,它是为了很大企业级的软件系统准备的,官方为了它能够支持很多很多的集群节点而不断改进,努力,但是我们普通用户哪里需要它那么强啊。虽然也在使用,但是我们就几个节点啊。它的性能根本发挥不出来。并且还得保持更新,为了那个出现的万一几率的问题。
最近空闲下来,不断给自己充电,慢慢积累了一些东西,感觉etcd是比较轻的,当然只是就眼前而言,很多组件类工具都是不断发展,最后很复杂笨重,希望它不会吧。但是etcd作为分布式K/V存储方案,具备很多基本功能,只需要自己简单组合,就能够用的很好。具体etcd是什么?有什么作用?什么原理?大家需要自己网上搜索。etcd3的监视功能,给我们的实时性带来很多优势。我感觉已经不错了。
经过上面的一段废话,让我们进入正题,很简单,看图:
我自己的服务就是服务节点1,2,3。只需要将自己的服务IP,端口注册到etcd集群中。我设计的格式是
服务系统名称/版本号/address/Leaseid作为key,值为服务的IP端口。同时每间隔一段时间(默认10s)向etcd集群刷新一次,作为心跳,告诉集群自己是活着的。太频繁我不建议,因为服务系统出现问题毕竟是少数,我们应该讲经历放在容错上。
我用java写了个例子,封装在项目etcd中的,其中的RegisterClusterServer即是服务节点注册,ClientCluster类是管理etcd集群节点的,该类会定时更新,获取etcd集群里面的所有节点地址。并且重新初始etcd集群访问客户端。ServerMonitor类则是监视新的服务节点加入和服务节点移除(异常),通过参数设置能够比较,更新文件。另外一个项目etcdmanager则是调用etcd项目,作为独立的查询系统,就是图上的独立代理。
当然另外还有一个hash一致方法的负载均衡,以供使用,项目已经上传git;这个项目只有一个类,还是来自网友的,只是测试了下,能够正常用我就没有研究了。总之,当前的一切只为小集群使用的,足够了。
好不容易休息,工作几年把自己身体整出问题了,感觉好尴尬。利用这个时间还是忍不住自己瞎捉摸了一下。希望今后有用吧,也说不定不会再弄程序了。我感觉做程序员真的累,有些时候顾不上家,而且房价一个劲涨的让人绝望。哎,发2句牢骚。希望所有程序员共勉。
HASH项目地址
https://github.com/jinyuttt/LoadBalance.git
封装项目地址
https://github.com/jinyuttt/etcdregister.git
---------------------
作者:jason成都
来源:CSDN
原文:https://blog.csdn.net/jinyuttt/article/details/82346909?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!
开发的服务集群部署方案,以etcd为基础(java)的更多相关文章
- consul异地多数据中心以及集群部署方案
consul异地多数据中心以及集群部署方案目的实现consul 异地多数据中心环境部署,使得一个数据中心的服务可以从另一个数据中心的consul获取已注册的服务地址 环境准备两台 linux服务器,外 ...
- Redis 中常见的集群部署方案
Redis 的高可用集群 前言 几种常用的集群方案 主从集群模式 全量同步 增量同步 哨兵机制 什么是哨兵机制 如何保证选主的准确性 如何选主 选举主节点的规则 哨兵进行主节点切换 切片集群 Redi ...
- 基于k8s集群部署prometheus监控etcd
目录 基于k8s集群部署prometheus监控etcd 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署prometheus监控 ...
- 高可用的K8S集群部署方案
涉及到的内容 LVS HAProxy Harbor etcd Kubernetes (Master Worker) 整体拓补图 以上是最小生产可用的整体拓补图(相关节点根据需要进行增加,但不能减少) ...
- MongoDB分片集群部署方案
前言 副本集部署是对数据的冗余和增加读请求的处理能力,却不能提高写请求的处理能力:关键问题是随着数据增加,单机硬件配置会成为性能的瓶颈.而分片集群可以很好的解决这一问题,通过水平扩展来提升性能.分片部 ...
- 基于Centos7xELK+Kafka集群部署方案
本次集群部署使用ELK版本统一为6.8.10,kafka为2.12-2.51 均可在官网下载 elasticsearch下载地址:https://www.elastic.co/cn/downloads ...
- kubeadm 线上集群部署(一) 外部 ETCD 集群搭建
IP Hostname 192.168.1.23 k8s-etcd-01 etcd集群节点,默认关于ETCD所有操作均在此节点上操作 192.168.1.24 k8s-etcd-02 etcd ...
- dubbo开发前戏--ZooKeeper集群部署(3.4.6)
最近在开发dubbo服务的时候一直用的是公司提供的zk平台,因为使用的人太多或者没人维护老是出问题,导致dubbo服务偶尔可以调通,偶尔调不通的情况,所以花点时间自己部署一套,后面出问题还方便看日志排 ...
- Mysql基于Mysql Cluster+MysqlRouter的集群部署方案
http://note.youdao.com/noteshare?id=a61c4a6ff2b76e5305430eb66eb116e2&sub=4B4B6E8D0E2849F9B0DFB67 ...
随机推荐
- 错误:38-Corel VideoStudio文件已损坏或被修改。请重新安装原始来源解决方法。
打开 Corel VideoStudio Pro X5(绘声绘影)弹出一下警告. 错误:38-Corel VideoStudio文件已损坏或被修改.请重新安装原始来源解决方法. [第一方法]:控制面板 ...
- MVC5 下拉框(多选)
1.Model [Display(Name = "职位")] [Required] public int[] job { get; set; } //职位属性 public IEn ...
- 二、MVC3+EF单表增删改查
document 表为例 写入静态类 NorthwindDataProvider: Controller可直接调用:如 //获取document表全部数据 NorthwindDataProvider. ...
- (四) HTML之表单元素
HTML中的表单元素,是构成动态网页的重要组成部分,因此,熟知表单元素是十分重要的.下面将根据表单中的一些常用标签进行介绍 1.单选按钮 <input type="radio" ...
- Linux 启动SVN服务
#使用默认端口3690启动svn服务svnserve -d -r /home/svndata # 如果出现#svnserve: Can't bind server socket: Address al ...
- PAT 1076 Forwards on Weibo
#include <cstdio> #include <cstdlib> #include <vector> #include <queue> #inc ...
- Celery-------项目目录
在实际应用中Celery的目录是有规则的 要满足这样的条件才可以 目录Celery_task这个名字可以随意,但是这个目录下一定要有一个celery.py这个文件 from celery import ...
- bind 事件名称 命名空间
1.通过在事件名称后面添加以点号分隔的后缀来为事件名称指派命名空间 $("#button").bind("click.editMode",function(){ ...
- 【转载】win7mysql5.7.18免安装配置教程
闲着没事,装个mysql试试,小编以前都是用的linux,感觉mysql安装就是傻瓜式操作啊,第一次在windows系统上装,感觉出了很多问题,现在将整个过程分享给大家,希望大家在安装的时候少走弯路. ...
- JavaScript数组常见操作
JavaScript数组常见操作 Tip: 右键在新标签中打开查看清晰大图 下面介绍JavaScript中的数组对象遍历.读写.排序等操作以及与数组相关的字符串处理操作 创建数组 一般使用数组字面量[ ...