开发的服务集群部署方案,以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 ...
随机推荐
- 使用Access作数据库
import java.sql.*; public class ConnectAccess { public static void main(String args[]){ ConnectAcces ...
- artDialog组件应用学习(五)
一.artDialog事件应用 对话框编写代码 function DialogEvent() { seajs.use(['jquery', '/Scripts/arale/artDialog/src/ ...
- springboot vue组件写的个人博客系统
个人写的博客管理系统,学习java不到一年 欢迎探讨交流学习 https://github.com/Arsense/ssmBlog 项目地址 如果觉得好的 帮忙star一下 谢谢! 基本技术 环境: ...
- Sql server 0x80131904
这是一个比较让人纠结的错误. 背景:添加了网站的分支,要拿一个现有的数据库做一个新的数据库的东东. 首先就是还原备份,然后做代码的修改.然而在登录的时候报了这个错误.0x80131904 什么插入的列 ...
- PAT 1076 Forwards on Weibo
#include <cstdio> #include <cstdlib> #include <vector> #include <queue> #inc ...
- Java程序员应该知道的linux命令
1.查看Java进程:ps -ef|grep java,ps auxf|grep jva; 2.杀死所有Java进程: pkill java, kill -9 进程ID: 3.进入目录:cd /usr ...
- Stage4--Python面向对象
说在前面: Stage1-Stage4简单介绍一下Python语法,Stage5开始用python实现一些实际应用,语法的东西到处可以查看到,学习一门程序语言的最终目的是应用,而不是学习语法,语法本事 ...
- 企业Web应用创新实验
我现在设计一个小而美的管理工具,为此费劲心思搞“创新”.“创新”一词已经被滥用,但我...真的想弄出一点创新. 基于Web的企业应用,如CRM.项目管理.OA等软件,尽管经历十几年发展,所谓的理论有所 ...
- 【PIC单片机】MPLAB X IDE快速入门指南
引言:近期由于项目实践需要,开始动手学习相关硬件知识.从PIC单片机入手. 单片机学习核心要点:查数据手册 配置寄存器 一.基于MPLAB X IDE配置位设置 MPLAB X IDE和MPLAB I ...
- Linux下的环境部署和项目发布
1.查看系统版本 sudo uname --m i686 //表示是32位 x86_64 // 表示是64位 2.下载对应版本软件,jdk和Tomcat(切记注意版本) jdk: 下载地址:http: ...