![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
精通分布式系列
文章平均质量分 92
深入细致的分享各种分布式技术,助你从小白成为分布式技术专家
冰 河
这个作者很懒,什么都没留下…
展开
-
假期做了一项调研:大厂为何都要自研RPC框架?结果合乎情理
五一假期过的可真快,今天开始,又要搬砖了。在五一假期当中,冰河做了一项调研,感觉结果还是挺合乎情理的。原创 2023-05-04 09:13:37 · 639 阅读 · 6 评论 -
自己动手写RPC框架有那么难吗?这次我设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架(赶快收藏)
没错,这次冰河又要搞事情了,这次准备下手的是RPC框架项目,自己动手写RPC框架。为什么要对RPC框架项目下手呢,因为在如今分布式、微服务乃至云原生不断发展的过程中,RPC作为底层必不可少的通信组件,被广泛应用在分布式、微服务和云原生项目中。原创 2022-10-18 12:58:04 · 1996 阅读 · 9 评论 -
从小白程序员到大厂高级技术专家,这些系统架构方案是你必须要掌握的!!
从单体到微服务,系统的架构大致经历了:单体应用架构—>垂直应用架构—>分布式架构—>SOA架构—>微服务架构的演变。也有很多互联网企业的系统架构已经向Service Mesh(服务化网格)演变。原创 2021-06-07 07:19:07 · 3271 阅读 · 8 评论 -
Dubbo中的统一契约是如何实现的?
Dubbo中统一契约的核心实现!!原创 2021-01-17 20:36:46 · 1055 阅读 · 0 评论 -
我是如何在短期内快速掌握Dubbo的原理和源码的(纯干货)?
冰河这次教你阅读源码的方式方法!!原创 2021-01-11 00:28:05 · 2801 阅读 · 6 评论 -
俯瞰Dubbo全局,阅读源码前必须掌握这些!!
阅读源码前必须要掌握的知识!!原创 2021-01-06 00:09:04 · 1017 阅读 · 5 评论 -
冰河开始对Dubbo下手了!
Dubbo源码系列开篇!原创 2021-01-05 19:01:31 · 1009 阅读 · 0 评论 -
java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy
Dubbo报错:java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy原创 2020-11-27 20:43:13 · 866 阅读 · 1 评论 -
结合实战和源码来聊聊Java中的SPI机制?
一文搞懂Java的SPI机制!!原创 2020-11-20 20:17:53 · 710 阅读 · 4 评论 -
RPC之——轻量级分布式RPC框架实战
今天,我们一起来实现一个轻量级的RPC框架。RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 RPC。会两方面会直接影响 RPC 的性能,一是传原创 2017-03-16 00:25:02 · 6264 阅读 · 2 评论 -
Hadoop之——再谈Hadoop的PRC机制
今天,我们重温一下Hadoop的RPC机制,同样的,我们还是基于之前的示例程序为大家讲解Hadoop的RPC机制,那我们直接进入正题吧。被调用方(也可称为服务端)的业务代码中必须有一个接口,而业务的具体实现写在 此接口的实现类中(jdk的动态代理必须要有接口的),而通过org.apache.hadoop.ipc.RPC(在hadoop-common-2.2.0.jar包中)的一系列方法来发原创 2016-09-25 23:41:15 · 1604 阅读 · 0 评论 -
String之——注解发布RMI/HTTPInvoker/Hessian/Burlap服务
使用自定义的spring注解标签发布RMI/HTTPInvoker/Hessian/Burlap远程服务1.依赖jar的pom.xml配置<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=原创 2017-04-06 21:20:45 · 2496 阅读 · 0 评论 -
Java之——Spring与RMI集成实现远程访问(插曲)
使用Spring对RMI的支持,可以非常容易地构建你的分布式应用。在服务端,可以通过Spring的org.springframework.remoting.rmi.RmiServiceExporter可以暴露你的服务;在客户端,通过org.springframework.remoting.rmi.RmiProxyFactoryBean可以使用服务端暴露的服务,非常方便。这种C/S模型的访问方式,可原创 2015-05-25 17:41:41 · 1843 阅读 · 0 评论 -
Java之——RMI远程过程调用(插曲)
一、定义 Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI全部的宗旨就是尽可能简化远程接口对象的使用。 我们知道原创 2015-05-25 16:58:37 · 2783 阅读 · 0 评论 -
Dubbo之——Dubbo Filter实战
熟悉Dubbo的同学或朋友,都会知道,一般dubbo的service层都是一些通用的,无状态的服务。但是在某些特殊的需求下,我们又需要传递一些上下文环境,打个不恰当的比方,例如需要在每次调用dubbo的服务的时候,记录一下用户名或者需要知道sessionid等。解决办法1如果是在项目设计的时候就意识到这一点的话,就好办,把所有的dubbo服务请求的参数都封装一个公共的父类,把一些上下文原创 2017-07-06 00:37:35 · 26020 阅读 · 5 评论 -
分布式事务之——tcc-transaction分布式TCC型事务框架搭建与实战案例(基于Dubbo/Dubbox)
一、背景有一定分布式开发经验的朋友都知道,产品/项目/系统最初为了能够快速迭代上线,往往不太注重产品/项目/系统的高可靠性、高性能与高扩展性,采用单体应用和单实例数据库的架构方式快速迭代开发;当产品/项目/系统做到一定规模的时候,原有的系统架构则不足以支撑义务发展需要,往往相同的业务则需要重复写很多次,导致代码大量冗余,难以维护和扩展,这时不得不对原有产品/项目/系统进行拆分,引入分布式的原创 2017-06-26 01:41:19 · 43714 阅读 · 10 评论 -
Dubbo之——管控台的安装(基于Zookeeper集群)
一、说明1、本博文Dubbo管控台的安装基于Zookeeper集群,具体参见博文《Dubbo之——Dubbo 注册中心集群Zookeeper-3.4.9的安装、 配置 》2、Dubbo 管控台可以对注册到 zookeeper 注册中心的服务或服务消费者进行管理,但管控台是否正常对Dubbo 服务没有影响,管控台也不需要高可用,因此可以单节点部署。二、服务器规划 IP: 19原创 2017-05-21 12:02:10 · 3404 阅读 · 2 评论 -
Dubbo之——Dubbo 注册中心集群Zookeeper-3.4.9的安装、 配置
一、架构说明Dubbo 建议使用 Zookeeper 作为服务的注册中心。Zookeeper 集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的。正是基于这个特性, 要将 ZK 集群的节点数量要为奇数(2n+1: 如 3、 5、 7 个节点)较为合适。 二、环境准备1、服务器规划服务器 1: 192.168.50.132 端口: 2181、 2881、 3881原创 2017-05-21 11:39:48 · 2700 阅读 · 0 评论 -
Dubbo之——服务只注册
http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-只注册原创 2017-05-20 13:50:01 · 2372 阅读 · 0 评论 -
Dubbo之——服务只订阅(开发调试)
http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-只订阅只订阅配置测试在注册中心查看只订阅的服务是否注册上?注意点:1、“只订阅”指的是需要做开发调试的服务提供者,只向注册中心订阅其所依赖的服务,但不向注册中心注册其本身可以提供的服务。2、“只订阅”需要结合“直连提供者”配置来进行调用测试。(正在开发的本地原创 2017-05-20 13:28:06 · 1965 阅读 · 0 评论 -
Dubbo之——消费端直连服务提供者(开发调试)
http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-直连提供者在生产环境使用情况是,服务消费端只消费指定Provider提供者的服务开发调试我们启动远程服务提供者我启动web-boss,这里调用是远程提供者服务查看user-service,provider方的配置 配置consumer方调用本原创 2017-05-20 13:02:31 · 11384 阅读 · 0 评论 -
Dubbo之——线程模型(Linux 用户线程数限制导致的 java.lang.OutOfMemoryError: unable to create new native thread 异常)
http://dubbo.io/User+Guide-zh.htm 用户指南>>线程模型类似于数据库的连接池Linux 用户线程数限制导致的 Java.lang.OutOfMemoryError: unable to create new native thread异常系统默认最大的线程数为1024个[root@liuyazhuang131 ~]# cat /etc/sec原创 2017-05-20 11:48:28 · 3121 阅读 · 0 评论 -
Dubbo之——几种负载均衡算法
1、RandomLoadBalance算法public class RandomLoadBalance extends AbstractLoadBalance { public static final String NAME = "random"; private final Random random = new Random(); protected Invok原创 2017-05-18 23:55:50 · 4652 阅读 · 0 评论 -
Dubbo之——服务接口的设计原则
1 、设计方式action->facade->biz->dao好的Dubbo服务接口设计,并非只是纯粹的接口服务化2.接口类型简单的数据查询接口:action.facade、dao(例根据Id查询记录)带业务逻辑的数据查询接口:action、facade、biz、dao(复杂的查询,带业务逻辑)简单的数据写入接口:action、facade、dao(简单数据插入)带原创 2017-05-18 22:55:48 · 4889 阅读 · 2 评论 -
Dubbo之——分布式服务子系统的划分
服务化的目标1. 将系统中独立的业务抽取出来,按业务的独立性进行垂直划分,抽象出基础服务层。2.基础服务为上游业务的功能 实现提供支撑,基础服务应用本身无状态,可随着系统的负荷灵活伸缩来提供服务能力。服务子系统的数量把控过多:可能划分过细,破坏业务子系统的独立性(如支付订单、退款订单、用户、账户),部署维护工作量大,独立进程占用内存多服务子系统的数量把控过少:没能很好地解耦,开原创 2017-05-17 00:17:56 · 2198 阅读 · 0 评论 -
Dubbo之——Dubbo服务集群
集群的目的:实现高可用,容错功能,集群的服务器不要放在一台物理机,要分散节点,才能实现高可用,高容错性能,一台提供者挂了,还有其他提供者,保证系统正常、稳定运行。一、环境准备edu-provider-01(192.168.1.121)edu-provider-02(192.168.1.122)Connecting to 192.168.1.121:22...Connectio原创 2017-05-16 23:54:03 · 13366 阅读 · 1 评论 -
Dubbo之——监控中心的介绍与简易监控中心的安装
1、 Dubbo 服务提供者和服务消费者中的 spring 配置文件中增加以下配置<!-- 监控中心协议,如果为protocol="registry",表示从注册中心发现监控中心地址,否则直连监控中心 -->配置截图如下: 添加完以上配置后,重新构建部署 Dubbo服务和服务消费者应用。2、 Dubbo简易监控中心的配置解释(不需要修改,使用默认配置原创 2017-05-14 13:12:37 · 4496 阅读 · 0 评论 -
Dubbo之——Dubbo 管理控制台的安装
Dubbo 管控台可以对注册到 zookeeper 注册中心的服务或服务消费者进行管理,但管控台是否正常对 Dubbo 服务没有影响,管控台也不需要高可用,因此可以单节点部署。IP: 192.168.3.71部署容器: apache-tomcat-7.0.77端口: 80801、下载Tomcatwget mirrors.hust.edu.cn/apache/tomcat/tom原创 2017-05-14 12:38:52 · 1836 阅读 · 0 评论 -
Dubbo之——安装 Dubbo 注册中心(Zookeeper-3.4.9)
Dubbo 建议使用 Zookeeper作为服务的注册中心。 注册中心服务器(192.168.50.131)配置, 安装 Zookeeper:1、修改/etc/hosts修改操作系统的/etc/hosts 文件中添加 # zookeeper servers192.168.50.131 liuyazhuang1312、下载Zookeeperwget mirrors.原创 2017-05-14 12:21:20 · 1944 阅读 · 1 评论 -
Dubbo之——Shell脚本维护Dubbo服务
1、部署目录规范目的:便于管理,避免应用迁移时的命名冲突。我定义的目录结构如下(linux)下:--home ----------linux home目录下 --liuyazhuang -------------用户信息 --dubboserver ------------项目类型 --app ----------原创 2017-04-23 16:27:43 · 5130 阅读 · 0 评论 -
Dubbo之——将Dubbo服务打包成Jar包
服务器:192.168.1.121(mydubbo-server)一、Dubbo服务的运行方式:1、使用Servlet容器运行(Tomcat、Jetty等)----不可取 缺点:增加复杂性(端口、管理)tomcat/jetty等占用端口,dubbo服务也需要端口浪费资源(内存):单独启动tomcat,jetty占用内存大2、自建Main方法类来运行(spring容器) ----原创 2017-04-23 14:32:48 · 20265 阅读 · 1 评论 -
Dubbo之——Eclipse调试Dubbox源码
PS:进行如下步骤前需要确保如下软件已经正确安装 1.正确安装JDK 2.正确安装eclipse 3.正确安装maven一、下载源码阿里已经将dubbo的源码全体迁移至github dubbo在github的主页为:https://github.com/alibaba/dubbo我采用的是将zip包下载,下载地址为: https://codel原创 2017-04-12 23:59:25 · 3653 阅读 · 0 评论 -
Dubbo之——改造Dubbo,使其能够兼容Spring 4注解配置
Dubbo本身就是基于Spring环境的,但是Dubbo当年Spring才2.版本。 而现如今Spring 已经发展到4.3.,今年(2017)应该会发布Spring 5。而随着Spring Boot的大热,Java-Base方式配置Spring也变得越来越流行。Dubbo + Boot的开发模式,也是较为常见的组合方式。但是,当使用Dubbo在高版本Spring环境中使用注解方式配置原创 2017-04-11 00:38:56 · 6050 阅读 · 7 评论 -
Dubbo之——与高版本的Spring集成
使用Dubbo时,因为要与4.x版本的spring,所以,我们需要做如下修改。一,与4.x版本的Spring共存首先需要排除掉dubbo自带的2.5的Spring,所以我使用下面这个配置,前面都是正常的引用Spring 4.1.6.RELEASE。 com.alibaba dubbo 2.5.3 org原创 2017-04-08 22:02:33 · 5038 阅读 · 0 评论