当前有很多服务集群部署,但是对于我们自己开发的服务系统怎么样能够解决部署问题,对大家很麻烦和笨重.

首先,我想说对于我们国内,小公司小系统比较多。大型系统毕竟少数,向阿里云看齐的不多。其实所谓的需要集群部署,可能一般需要部署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)的更多相关文章

  1. consul异地多数据中心以及集群部署方案

    consul异地多数据中心以及集群部署方案目的实现consul 异地多数据中心环境部署,使得一个数据中心的服务可以从另一个数据中心的consul获取已注册的服务地址 环境准备两台 linux服务器,外 ...

  2. Redis 中常见的集群部署方案

    Redis 的高可用集群 前言 几种常用的集群方案 主从集群模式 全量同步 增量同步 哨兵机制 什么是哨兵机制 如何保证选主的准确性 如何选主 选举主节点的规则 哨兵进行主节点切换 切片集群 Redi ...

  3. 基于k8s集群部署prometheus监控etcd

    目录 基于k8s集群部署prometheus监控etcd 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署prometheus监控 ...

  4. 高可用的K8S集群部署方案

    涉及到的内容 LVS HAProxy Harbor etcd Kubernetes (Master Worker) 整体拓补图 以上是最小生产可用的整体拓补图(相关节点根据需要进行增加,但不能减少) ...

  5. MongoDB分片集群部署方案

    前言 副本集部署是对数据的冗余和增加读请求的处理能力,却不能提高写请求的处理能力:关键问题是随着数据增加,单机硬件配置会成为性能的瓶颈.而分片集群可以很好的解决这一问题,通过水平扩展来提升性能.分片部 ...

  6. 基于Centos7xELK+Kafka集群部署方案

    本次集群部署使用ELK版本统一为6.8.10,kafka为2.12-2.51 均可在官网下载 elasticsearch下载地址:https://www.elastic.co/cn/downloads ...

  7. kubeadm 线上集群部署(一) 外部 ETCD 集群搭建

      IP Hostname   192.168.1.23 k8s-etcd-01 etcd集群节点,默认关于ETCD所有操作均在此节点上操作 192.168.1.24 k8s-etcd-02 etcd ...

  8. dubbo开发前戏--ZooKeeper集群部署(3.4.6)

    最近在开发dubbo服务的时候一直用的是公司提供的zk平台,因为使用的人太多或者没人维护老是出问题,导致dubbo服务偶尔可以调通,偶尔调不通的情况,所以花点时间自己部署一套,后面出问题还方便看日志排 ...

  9. Mysql基于Mysql Cluster+MysqlRouter的集群部署方案

    http://note.youdao.com/noteshare?id=a61c4a6ff2b76e5305430eb66eb116e2&sub=4B4B6E8D0E2849F9B0DFB67 ...

随机推荐

  1. 使用Access作数据库

    import java.sql.*; public class ConnectAccess { public static void main(String args[]){ ConnectAcces ...

  2. artDialog组件应用学习(五)

    一.artDialog事件应用 对话框编写代码 function DialogEvent() { seajs.use(['jquery', '/Scripts/arale/artDialog/src/ ...

  3. springboot vue组件写的个人博客系统

    个人写的博客管理系统,学习java不到一年 欢迎探讨交流学习 https://github.com/Arsense/ssmBlog  项目地址 如果觉得好的 帮忙star一下 谢谢! 基本技术 环境: ...

  4. Sql server 0x80131904

    这是一个比较让人纠结的错误. 背景:添加了网站的分支,要拿一个现有的数据库做一个新的数据库的东东. 首先就是还原备份,然后做代码的修改.然而在登录的时候报了这个错误.0x80131904 什么插入的列 ...

  5. PAT 1076 Forwards on Weibo

    #include <cstdio> #include <cstdlib> #include <vector> #include <queue> #inc ...

  6. Java程序员应该知道的linux命令

    1.查看Java进程:ps -ef|grep java,ps auxf|grep jva; 2.杀死所有Java进程: pkill java, kill -9 进程ID: 3.进入目录:cd /usr ...

  7. Stage4--Python面向对象

    说在前面: Stage1-Stage4简单介绍一下Python语法,Stage5开始用python实现一些实际应用,语法的东西到处可以查看到,学习一门程序语言的最终目的是应用,而不是学习语法,语法本事 ...

  8. 企业Web应用创新实验

    我现在设计一个小而美的管理工具,为此费劲心思搞“创新”.“创新”一词已经被滥用,但我...真的想弄出一点创新. 基于Web的企业应用,如CRM.项目管理.OA等软件,尽管经历十几年发展,所谓的理论有所 ...

  9. 【PIC单片机】MPLAB X IDE快速入门指南

    引言:近期由于项目实践需要,开始动手学习相关硬件知识.从PIC单片机入手. 单片机学习核心要点:查数据手册 配置寄存器 一.基于MPLAB X IDE配置位设置 MPLAB X IDE和MPLAB I ...

  10. Linux下的环境部署和项目发布

    1.查看系统版本 sudo uname --m i686 //表示是32位 x86_64 // 表示是64位 2.下载对应版本软件,jdk和Tomcat(切记注意版本) jdk: 下载地址:http: ...