IntelliJ IDEA 2017 Dubbo Elastic-job Redis Zookeeper RabbitMQ FastDFS MyCat 简介以及部分实现(三)
前言
首先需要说明一下,与前两章的安装篇不太一样,这篇主要扫清一下这些插件/框架 等都是干什么用的,大多数都会用于服务端或监测工具或其他,作为新手建立一个大概的思想更好的了解自己的项目.废话不多说直接进入正题.
Dubbo
什么是Dubbo?
Dubbo是一个分布式服务框架,由阿里旗下团队开发出来,来源与核心业务抽取出来说白了就是根据业务流向取出来做成框架,能使前端更加快速和稳定的相应.
首先是服务治理部分:

我说一下我个人理解,这个套系统的根源是线上的实际业务诞生儿来的,整体的架构思想如图我感觉特别凸显了MVC的原理不过深化了MVC思想,并不是简单的model层贯穿程序过程,这里指的是注册中心,治理中心,而调度中心和监控中心提供所有数据分析与治理中心行程依赖关系,为所有服务层出现的问题提供解决方案感觉上相当于一个有监管模式的model 如果有任何问题我可以从根源上改变model 来应付出现的错误.
视图层我觉得可以分为前端和集成,功能在于收集服务与编排服务,比如服务路由,软负载均衡 等等,当然他们不管处理这些服务,服务会被编排之后统一进入核心层面那才是真正的服务处理也就是MVC中的Controller层,这段完全是我自己的理解如有偏差还请指出.

为什么要使用Dubbo?
1.首先是刚刚提及的服务中心和注册中心,贯穿整个流程开发者只需要在服务中心注册服务,客户端去在服务中心查找该服务就可以了 而且服务中心使用zookeeper实现节点控制服务启动该服务时候会创建服务提供者节点信息,当然关闭时候会删除该信息.这样就方便客户端测试时候去主动选择服务提供者了,也就是直连服务提供者.
2.集群容错策略,我个人理解就是给报错划分等级制度,比如出现特别严重的错误需要马上修复的会立即报出,而部分错误并不会影响正常的线上业务所以优先级没有那么高,可以暂缓修改,还有如果一条服务出现问题,而有很多类似服务可以运行,那么会切换该服务,并且报错,这应该也算是一种集群容错策略,简单来说就是"不是不报,时候未到",这种集群容错对于程序耦合度要求很高.
3.负载均衡,就像上面所提到了如果一条服务压力过大而其他服务压力不是很大的时候就需要去均摊当前压力最大的服务这就是负载均衡机制,再搭配集群容错,划分错误等级 选择性报错 形成一条完整的自执行体.
4.多协议,相当于数据的多重入口 除了dubbo ,hessian,rmi 等等 根据需求选择合适的数据协议进行粒化分类
这里就不具体举例子如何实现的了,才疏学浅 只能理解到这些了,过一段时间使用熟练了再来分享以dubbo框架实现的工程
Zookeeper
什么是Zookeeper?
ZooKeeper是一个开源的分布式服务框架,它是Apache Hadoop项目的一个子项目,主要用来解决分布式应用场景中存在的一些问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置管理等,它支持Standalone模式和分布式模式,在分布式模式下,能够为分布式应用提供高性能和可靠地协调服务,而且使用ZooKeeper可以大大简化分布式协调服务的实现,为开发分布式应用极大地降低了成本。

ZooKeeper工作原理
ZooKeeper集群由一组Server节点组成,这一组Server节点中存在一个角色为Leader的节点,其他节点都为Follower。当客户端Client连接到ZooKeeper集群,并且执行写请求时,这些请求会被发送到Leader节点上,然后Leader节点上数据变更会同步到集群中其他的Follower节点.dubbo中集群管理部分就用到它,但是具体如何实现的暂未深层挖掘.
Redis
什么是redis?
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
在dubbo框架中分布式服务会用到redis,在集群容错方案中各个节点的配置信息会储存在redis中(这也许就是服务提供者发布之后,服务使用者可以查询到服务信息,单服务提供者关闭服务之后随之该服务也会消失的原因? 个人理解)
Elastic-job
什么是Elastic-job?
elastic-job是当当开发的基于qutarz以及zookeeper封装的作业调度工具,主要有两个大框架,一个是elastic-job lite另外一个是elastic-job cloud,其中qutarz是一个开源的作业调度工具,zookeeper是分布式调度工具,这两者结合搭建了elastic-job-lite,这是一个无中心节点的调度,而elastic-job-cloud是一个有中心节点的分布式调度开源工具,只需要设置好机器以及分片,就可以自动的调度到对应的机器上运行,与lite的不同时cloud采用了mesos来进行分布式资源管理,简单的来说两者的不同是:同一个作业在两台机器上跑,lite需要手动在两台机器上跑,但是cloud只需要上传作业包,就可以自动的在两台机器上跑,因为lite不支持作业的调度,为无中心的。
Elastic-job有点优势
1. 分布式调度
2. 作业高可用
3. 最大限度利用资源
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗.



MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度.
对于数据库中间件了解比较匮乏,不过这里有两位大神的回答比较到位:
其一是参与mycat开发的大神: http://www.csdn.net/article/2015-07-16/2825228
其二对其设计初衷表示怀疑的大神:http://www.yougemysqldba.com/discuz/viewthread.php?tid=526&extra=page%3D1
看完这两部分大神的理解 根据自己做的业务在做斟酌~
IntelliJ IDEA 2017 Dubbo Elastic-job Redis Zookeeper RabbitMQ FastDFS MyCat 简介以及部分实现(三)的更多相关文章
- IntelliJ IDEA 2017 JDK Tomcat Maven 配置步骤详解(一)
要求 配置 Java基础环境(实际上应该在虚拟机linux环境下 安装CentOS 7,但是我这电脑实在承受不住了) 安装 开发工具 IntelliJ IDEA 2017.1 第一部分: JDK ...
- Intellij IDEA 2017 详细图文教程之概述
天天编码 , 版权所有丨本文标题:Intellij IDEA 2017 详细图文教程之概述 转载请保留页面地址:http://www.tiantianbianma.com/intellij-idea- ...
- IntelliJ IDEA 2017 注册方法
本文使用破解方式注册. JetbrainsCrack-2.6.2.jar适用于ideaIU-2017.2.之前版本,若下载的版本较新破解文件可能无法使用,破解时一闪而退. 其中JetbrainsCra ...
- intellij idea 2017和Jprofiler 10的集成 报错问题
本来想用Jprofiler来分析一下自己写的Java项目,以提高代码执行效率和自己的编码能力.结果,官网和网上很多帖子都写了点出session->IDE integrations->选择i ...
- IntelliJ IDEA 2017新工具
IntelliJ IDEA 2017 教程之概述 图文详解如何安装 Intellij IDEA 2017 深入剖析 IntelliJ IDEA 2017 的目录结构 图文详解如何配置 IntelliJ ...
- SmartSql = Dapper + MyBatis + Cache(Memory | Redis) + ZooKeeper + R/W Splitting + ......
SmartSql Why 拥抱 跨平台 DotNet Core,是时候了. 高性能.高生产力,超轻量级的ORM.156kb (Dapper:168kb) So SmartSql TargetFrame ...
- IntelliJ IDEA 2017.2.6 x64 配置 tomcat 启动 maven 项目
IntelliJ IDEA 2017.2.6 x64 配置 tomcat 启动 maven 项目 1.确认 IDEA 是否启用了 tomcat 插件 2.添加 tomcat 选择 tomcat 存放路 ...
- IntelliJ IDEA 2017.3.1安装步骤
https://www.jetbrains.com/idea/download/#section=windows 下载旗舰版 1.下载完成后,运行安装: 2.next: 3.选择你要安装的目录,nex ...
- Windows10 + IntelliJ IDEA 2017.3.2 + wamp2e + Yii + PHPunit 搭建测试环境
一.环境 系统: windows10 WampServer: wampserver2.2e-php5.3.13-httpd2.2.22-mysql5.5.24-32b.exe IDE: Intel ...
随机推荐
- Future Failure CodeForces - 838C (博弈论,子集卷积)
大意: 两人轮流操作一个长$n$, 只含前$k$种小写字母的串, 每次操作删除一个字符或者将整个串重排, 每次操作后得到的串不能和之前出现过的串相同, 求多少种串能使先手必胜. 找下规律发现$n$为奇 ...
- docker 入坑1
本文是记录一下学习docker的过程,希望可以帮助到入门的朋友. 系统:ubuntu16.04 docker:18.09 打开官网:https://docs.docker.com/install/li ...
- C# vb .net实现羽化效果
在.net中,如何简单快捷地实现Photoshop滤镜组中的羽化效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步 ...
- 记redis一次Could not get a resource from the pool 异常的解决过程
最近有个项目中的redis每天都会报 "Could not get a resource from the pool"的错误,而这套代码在另一地方部署又没有问题.一直找不到错误原因 ...
- Linux环境Ubuntu上安装GitLab
本文主要介绍在Ubuntu[Ubuntu 18.04.3]上安装最新的GitLab版本控制工具. 一.安装更新GitLab所需要的依赖项 sudo apt-get update 下载过程中,网络要有所 ...
- 论PM与团队与敏捷开发
敏捷开发是每个有追求的PM都会去读的书 敏捷开发是很少程序会去读的书 敏捷开发是团体其他人很少会读的书 然而, 据我的 所见, 所闻, 所论 敏捷开发在大家的脑袋里分为很多种版本 既有可以一辩的新鲜思 ...
- CSS两列布局
方法1:左边设置绝对定位,右边设置左外边距,大小和左边的宽度相等 //CSS部分: .contain{ position :relative; height: 300px; } .left{ posi ...
- cscope安装
安装 # apt-get install cscope .vimrc中添加 if has("cscope") set csprg=/usr/bin/cscope set csto= ...
- leetcode-45.跳跃游戏II(hard)
给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 示例: 输入: [2,3,1,1,4]输出 ...
- 用PL/SQL工具连接Oracle数据库的时报错:ORA-12638: 身份证明检索失败的解决方法
本地客户端用PLSQL Developer连接远程数据库时提示: ORA-12638: 身份证明检索失败!!! 解决方法一: 此目录下F:\myorcl\product\11.2.0\client_1 ...