开发的服务集群部署方案,以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 ...
随机推荐
- Java 条件语句
1.if...else 一个 if 语句包含一个布尔表达式和一条或多条语句. if(布尔表达式) { //如果布尔表达式为true将执行的语句 }else{ //如果布尔表达式为false将执行的语句 ...
- 【代码笔记】Java基础:Java的方法和类
面向过程与面向对象都是我们编程中,编写程序的一种思维方式.例如:公司打扫卫生(擦玻璃.扫地.拖地.倒垃圾等), 按照面向过程的程序设计方式会思考“打扫卫生我该怎么做,然后一件件的完成”,最后把公司卫生 ...
- css background 背景知识详解
background 背景属性 我们知道元素有前景色color,与之对应的还有背景色,通过background我们可以为元素添加实色(background-color)和任意多个背景图片(backgr ...
- Jmeter使用CSV Data Set Config参数化数据不重复的多次循环执行(实现多用户多次抽奖功能)
Jmeter中使用CSV Data Set Config参数化不重复数据执行N遍 要求: 今天要测试上千条数据,且每条数据要求执行多次,(模拟多用户多次抽奖) 1.用户id有175个,且没有任何排序规 ...
- 安全隐患,你对X-XSS-Protection头部字段理解可能有误
0×00. 引言 我曾做过一个调查,看看网友们对关于X-XSS-Protection 字段的设置中,哪一个设置是最差的,调查结果令我非常吃惊,故有此文. 网友们认为 最差的配置是X-XSS-Prote ...
- MonkeyRunner之MonkeyRecorder录制回放脚本
MonkeyRunner强大的功能之一便是允许用户自由录制需要的脚本,录制和回放需要两个脚本文件 monkey_recorder.py和monkey_playback.py 首先来看 monkey_r ...
- ORA-01795: 列表中的最大表达式数为1000的解决方法
IN中的数据量不能超过1000条. 解决方案:把条件分成多个少于1000的IN即: DELETEFROMT_MM_SECTION_SITE_UPDATEWHERE T.T_MM_SECTION_SL_ ...
- 源码安装mysql5.6.37
MYSQL 源码安装: 修改参数文件:vi /etc/security/limits.confmysql soft nproc 2047mysql hard nproc 16384mysql soft ...
- python3乱码问题:接口返回数据中文乱码问题解决
昨天测试接口出现有一个接口中文乱码问题,现象: 1 浏览器请求返回显示正常 2 用代码请求接口返回数据中文显示乱码 3 使用的python3,python3默认unicode编码,中文都是可以正常显示 ...
- 用批处理在windows中导出/导入无线网络信息,复制保存为bat即可
@echo offtitle 在windows中导出/导入无线网络信息 :Beginecho ========================echo 请选择操作:echo 1 查看可用的无线网络ec ...