Dubbo

灰度发布浅析

╄→尐↘猪︶ㄣ 提交于 2020-12-08 09:57:25
定义 灰度发布就是已一种平滑过渡的方式来发布,通过切换线上新旧版本之间的路由权重,逐步从旧版本切换到新版本;比如要上线新功能,首先只是更新少量的服务节点,通过路由权重,让少部分用户体验新版本,如果没有什么问题,再更新所有服务节点;这样可以在出现问题把影响面降到最低,保证了系统的稳定性。 灰度发布 一个系统往往有接入层比如nginx(Openresty),网关层比如zuul,以及服务层比如各种rpc框架;在这几层都有路由功能,也就是说这几层都可以做灰度;接入层可以使用nginx+lua来实现灰度,网关层zuul可以结合ribbon来实现灰度,rpc框架如dubbo本身提供了路由功能可以直接做灰度处理;下面看看具体如何去实现; 接入层灰度 接入层我们这里使用功能更强大的Openresty,然后使用lua进行路由转发,相关的路由策略可以配置在分布式缓存redis里面,当然也可以持久化到数据库里面; 准备 准备一台Openresty,两台web服务器tomcat(端口分别是8081,8082),以及redis;为了方便模拟在redis里面配置白名单,如果在白名单里面就走8082,不在则走8081; Openresty配置 需要在Openresty中配置支持lua,以及相关路由的lua脚本,nginx.conf配置如下: http { ... lua_package_path "

RocketMQ与Dubbo相爱相杀引起的FullGC

有些话、适合烂在心里 提交于 2020-12-07 06:46:28
在日常后端开发中,部分业务都是接收MQ消息,在消费消息的过程中,会调用外部的Dubbo接口,根据接口返回数据,做一些业务逻辑处理.如下图 上面会涉及两类线程,一类是MQ线程,一类是Dubbo线程. Dubbo接口调用超时也是经常会发生的事情,这篇文章中,我们模拟的情况是,让Dubbo接口调用超时,图中红线所示.然后一直向MQ消费者发送消息,我们观察线程和堆栈的变化. 仓库代码 https: //github.com/infuq/MQ-Dubbo-FullGC 如果需要运行上述代码,还需要部署Zookeeper和RocketMQ环境. 工程结构如下图 Dubbo提供者的接口超时时间设置的是5s.如下图 而在提供者的实现方法中,让线程睡眠20秒,从而达到调用者调用接口超时目的.如下图 接下来按顺序启动它们 首先启动Dubbo提供者(DubboProvider类). 接着启动MQConsumer, 同时需要给它配置VM启动参数 -Xms90M -Xmx90M -XX :+PrintGCDetails 最后启动MQProducer, 它会一直发送消息. 所有的都启动完成之后, 借助JDK自带的jvisualvm.exe工具观察MQConsumer的堆栈信息. 观察MQConsumer的堆栈信息,会发现老年代会一直增长,当老年代快增长到顶端时,手动dump堆栈信息,用于接下来分析堆的情况.

致敬最优秀的同行者们

牧云@^-^@ 提交于 2020-12-06 18:51:37
点 击 上 方 “ 中 间 件 兴 趣 圈 ” , 选 择 “ 设 为 星 标 ” 做 积 极 的 人 , 越 努 力 越 幸 运 ! 真的非常开心,『中间件兴趣圈』公众号粉丝数正式迈过1W大关,达成一个重要里程碑,笔者感慨真的不容易。 2018年10月19号通过公众号发布第一篇文章,到今天为止,公众号已经发表了145篇原创文章,坚持真的很难,但只要能坚持,就一定会有好的收获,这不,你瞧,1W个人与你一起同行,这成就不可谓不大。 在持续坚持努力下,我出版了《RocketMQ技术内幕》一书,从一家名不经传的小公司顺利跳槽到快递物流头部企业:中通快递,让我能在更高的平台上发光发热,使我深深的认识到: 越努力越幸运,唯有坚持不懈 。希望能用这句话与各位粉丝朋友共勉,相互交流,共同成长。 相信各位读者朋友们也能直观的感受到『中间件兴趣圈』主要发表的文章都比较枯燥,因为大部分都是以源码分析为主,认真读完一篇文章需要极大的耐心,我从后台的统计数据上看到,每篇文章的读完率其平均值在50%左右,这足以说明大家拥有强烈的求知欲望,这里必须有掌声,为各自点个赞吧。与各位优秀的读者同行,是我的一大荣幸,未来继续加油。 『中间件兴趣圈』的定位是记录笔者的学习历程与成长历程,同时也起到驱动笔者去学习,给自己提的要求是尽最大努力保证一周一篇原创文章。 绝不注水、绝不洗稿,这是我的初心也是底线。 『中间件兴趣圈

Redis学习笔记(4)—— Jedis入门

拈花ヽ惹草 提交于 2020-12-06 18:16:33
一、Jedis介绍   Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如Java、C、C#、C++、php、Node、js、Go等。   在官方网站里列的一些Java客户端,有jedis、Redisson、Jredis等,其中官方推荐使用jedis,在企业中用的最多的就是Jedis。 二、Java连接Redis 2.1 导入jar包 commons-pool2-2.3.jar jedis-2.7.0.jar 2.2 单实例连接 @Test public void testJedisSingle() throws Exception { // 1.设置ip地址和端口号 Jedis jedis = new Jedis("192.168.25.129", 6379 ); // 2.设置数据 jedis.set("name", "zhangsan" ); // 3.获得数据 String name = jedis.get("name" ); System.out.println(name); // 4.释放资源 jedis.close(); }    注: 如果执行上面代码时抛出如下异常 redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeOutException:

工作11年,从阿里P8出来,头发也没了,人也虚了,就剩下这份笔记了!

好久不见. 提交于 2020-12-06 09:41:17
工作了11年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,熬到P8也费了不少心思,小编也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记。此笔记已助朋友拿到腾讯,阿里,美团等9个offer。 由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容! 大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大厂面试题等、等技术栈! 笔记目录展示: 需要获取得话麻烦一键三连之后,加小助理VX:wjj2632646免费领取!!! 需要获取得话麻烦一键三连之后,加小助理VX:wjj2632646免费领取!!! 部分内容截图: 需要获取得话麻烦一键三连之后,加小助理VX:wjj2632646免费领取!!! 来源: oschina 链接: https://my.oschina.net/u/4297704/blog/4776560

真香!阿里、腾讯、百度、京东等多位架构师鼎力推荐SpringCloud笔记

老子叫甜甜 提交于 2020-12-05 15:14:19
前言 过去十几年里,广义的“微服务”架构以其小团队快速创建和迭代服务带来的架构弹性、扩展性、敏捷性,天然匹配了互联网业务快速发展和变化的特点,在各大互联网公司取得了巨大的成功。时至云原生应用时代,已不再是是否采用微服务架构的问题,而是何时采用以及如何在生产上实战的问题。 今天分享的这份学习资料:讲解将如何基于Spring Cloud生态体系进行微服务实战的方方面面的细节都涵盖了,从这个意义上来讲,确实做到了“重新定义”。 本书内容有3大特色: 足够广:详细讲解了Spring Cloud的核心常用组件以及Spring Cloud的增强生态,针对生产实践中常见问题给出可落地的&*佳实践方案,无论您是初学者还是开发人员,还是架构师,都能从此书获益。 有深度:本书对涉及的Spring Cloud组件按照从入门、进阶、实战、扩展增强的顺序循序渐进进行剖析和讲解,帮助作者知其然并知其所以然,授之以渔。 重实践:注重生产实践,通过案例驱动,给出优秀的生产实践方案和优秀的生产配置,帮助读者快速落地企业微服务架构。 本书大牛出版: 本书由Spring Cloud中国社区官方撰写,基于Spring Cloud的Finchley.RELEASE版本,基于Spring Cloud的Finchley.RELEASE版本,核心成员来自原阿里、蚂蚁金服、京东金融等互联网企业,经验丰富。 本书内容有3大特色

美团工作7年,精华全在这份学习笔记里了,已成功帮助多位朋友拿到5个大厂Offer

那年仲夏 提交于 2020-12-05 14:58:27
在美团工作了7年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,笔者也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记。此笔记已助朋友拿到腾讯,阿里,美团等5个offer。 由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容! 大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大厂面试题等、等技术栈! 有想获取的读者朋友,见下: 笔记目录展示: 获取完整笔记,见下: 部分内容截图: 获取完整笔记,见下: 来源: oschina 链接: https://my.oschina.net/u/4406332/blog/4775960

阿里中间件研发面经

ぃ、小莉子 提交于 2020-12-05 02:00:18
阿里中间件研发面经 研发工程师(Java) 我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。这是我的 面经,在这里分享给大家。 一面: 1 自我介绍 2 项目中做了什么,难点呢。 3 Java的线程池说一下,各个参数的作用,如何进行的。 4 Redis讲一下 5 分布式系统的全局id如何实现。用zookeeper如何实现的呢,机器号+时间戳即可。 6 分布式锁的方案,redis和zookeeper那个好,如果是集群部署,高并发情况下哪个性能更好。 7 kafka了解么,了解哪些消息队列。 8 想做业务还是研究。 9 然后出了一道题,linux的访问权限是rwx格式的。使用一个类支持访问权限的增删改查,并且注意使用的数据格式以及方法效率,规范。给了一个多小时写题。 耗时将近30分钟。 二面: 1 介绍你做的项目和其中的难点。 2 上次面试官问的问题,反射的作用是什么。 3 数据仓库,多线程和并发工具等。 4 私有云,docker和k8s等。 5 了解哪些中间件,dubbo,rocketmq,mycat等。 6 dubbo中的rpc如何实现。 7 自己实现rpc应该怎么做 9 dubbo的服务注册与发现。 10 听说我是非科班,于是问了些排序算法 耗时将近30分钟。 三面: 三面不是面试,而是笔试,耗时三个小时,考的是Java核心的基础

Dubbo系列-扬帆起航

好久不见. 提交于 2020-12-04 20:44:55
前言 接下来一段时间敖丙将带大家开启紧张刺激的 Dubbo 之旅!是的要开始写 Dubbo 系列的文章了,之前我已经写过一篇架构演进的文章,也说明了微服务的普及化以及重要性,服务化场景下随之而来的就是服务之间的通信问题,那服务间的通信脑海中想到的就是 RPC,说到 RPC 就离不开咱们的 Dubbo。 这篇文章敖丙先带着大家来 总览全局 ,一般而言熟悉一个框架你要先知道这玩意是做什么的,能解决什么痛点,核心的模块是什么,大致运转流程是怎样的。 你要一来就扎入细节之中无法自拔,一波 DFS 直接被劝退的可能性高达99.99%,所以本暖男敖丙将带大家先过一遍 Dubbo 的简介、总体分层、核心组件以及大致调用流程 。 不仅如此我还会带着大家过一遍如果要让你 设计一个 RPC 框架你看看都需要什么功能 ?这波操作之后你会发现嘿嘿 Dubbo 怎么设计的和我想的一样呢?真是英雄所见略同啊! 而且我还会写一个简单版 RPC 框架实现,让大家明白 RPC 到底是如何工作的。 如果看了这篇文章你要还是不知道 Dubbo 是啥,我可以要劝退了。 我们先来谈一谈什么叫 RPC ,我发现有很多同学不太了解这个概念,还有人把 RPC 和 HTTP 来进行对比。所以咱们先来说说什么是 RPC。 什么是 RPC RPC,Remote Procedure Call 即远程过程调用

说一下Dubbo 的工作原理?注册中心挂了可以继续通信吗?

三世轮回 提交于 2020-12-04 07:44:39
面试题 说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程? 面试官心理分析 MQ、ES、Redis、Dubbo,上来先问你一些思考性的问题、原理,比如 kafka 高可用架构原理、es 分布式架构原理、redis 线程模型原理、Dubbo 工作原理;之后就是生产环境里可能会碰到的一些问题,因为每种技术引入之后生产环境都可能会碰到一些问题;再来点综合的,就是系统设计,比如让你设计一个 MQ、设计一个搜索引擎、设计一个缓存、设计一个 rpc 框架等等。 那既然开始聊分布式系统了,自然重点先聊聊 dubbo 了,毕竟 dubbo 是目前事实上大部分公司的分布式系统的 rpc 框架标准,基于 dubbo 也可以构建一整套的微服务架构。但是需要自己大量开发。 当然去年开始 spring cloud 非常火,现在大量的公司开始转向 spring cloud 了,spring cloud 人家毕竟是微服务架构的全家桶式的这么一个东西。但是因为很多公司还在用 dubbo,所以 dubbo 肯定会是目前面试的重点,何况人家 dubbo 现在重启开源社区维护了,捐献给了 apache,未来应该也还是有一定市场和地位的。 既然聊 dubbo,那肯定是先从 dubbo 原理开始聊了,你先说说 dubbo 支撑 rpc 分布式调用的架构啥的,然后说说一次 rpc