Dubbo

聊聊dubbo-go的GenericFilter

最后都变了- 提交于 2020-08-17 09:55:48
序 本文主要研究一下dubbo-go的GenericFilter GenericFilter dubbo-go-v1.4.2/filter/filter_impl/generic_filter.go const ( // GENERIC //generic module name GENERIC = "generic" ) func init() { extension.SetFilter(GENERIC, GetGenericFilter) } // when do a generic invoke, struct need to be map // GenericFilter ... type GenericFilter struct{} GenericFilter的init方法设置了GetGenericFilter GetGenericFilter dubbo-go-v1.4.2/filter/filter_impl/generic_filter.go // GetGenericFilter ... func GetGenericFilter() filter.Filter { return &GenericFilter{} } GetGenericFilter方法创建了GenericFilter Invoke dubbo-go-v1.4.2/filter/filter

Spring Cloud Alibaba系列(五)sentinel实现服务限流降级

孤街醉人 提交于 2020-08-17 07:35:46
一、sentinel是什么 sentinel的官方名称叫分布式系统的流量防卫兵。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。在Spring Cloud项目中最开始我们使用的是Hystrix,目前已停止更新了。现在Spring Cloud官方推荐的是rensilience4j。当然还有我们今天学习的sentinel。 Sentinel 具有以下特征: 丰富的应用场景 :Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 完备的实时监控 :Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运 行情况。 广泛的开源生态 :Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。 完善的 SPI 扩展点 :Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。 二、sentinel实现限流 2.1

诺禾致源:Java培训要多长时间?需要学习什么内容?

帅比萌擦擦* 提交于 2020-08-17 07:24:23
杭州Java培训要多长时间?需要学习什么内容? 浙江优就业 07-14 15:22 Java行业是很注重技术与工作经验的,零基础的人想找Java相关工作比较困难,需要先学习一定的Java知识才行,而参加Java培训是快速学习Java技术的一条捷径。当然在选择Java培训机构的时候首先要了解Java培训的学习时间与学习内容才行,下面小U就来介绍下 杭州Java培训要多长时间?需要学习什么内容? 杭州Java培训要多长时间? 不同的培训机构,不同的培训方式,Java培训时长也是不同的。优就业杭州Java全日制面授班的学习时长为6个月左右,因为Java学起来相对比较难,所以学习时间会比较长。 杭州Java培训需要学习什么内容? 优就业杭州Java培训课程内容是根据企业需求研发的,涵盖时下热门的Java技能,高度契合企业需求。并且在专业技术学习的同时,融入大量全真项目实训,理论与实战相结合,帮助学员学会、学懂。优就业杭州Java培训课程内容分为六个阶段,分别为: 第一阶段JavaEE基础,主要包含的知识点有:Java基础语法、面向对象、核心类库、集合、异常、IO、线程、JDK新特性、阶段考核。 第二阶段JavaWeb开发,主要包含的知识点有:前端技术、数据库、JAVA数据库操作、软件服务器及服务器相关技术、动态网页JSP、AJAX、优就业-在线医疗系统、阶段考核。 第三阶段Java高级框架

3 月,跳不动了?

断了今生、忘了曾经 提交于 2020-08-17 04:32:13
不少单位已经开始复工了,跳槽季已经开始。虽说大多数互联网企业,像腾讯、字节跳动等,都已经开通远程面试环节,而且薪资有走高的趋势。但据目前看,面试难度大了许多,甚至有朋友面试后怀疑:自己真的落伍了? 比如,面试高级开发岗位时,面试官不仅考察基础能力,更会重点考察高并发、分布式等架构相关的技术背后的思考逻辑,比如:微服务,负载均衡,Redis,RPC等。(今年 Java 面试到底聚焦在知识点?文末扫码获取) 但这些技术包含了 N 多优化、N 多细节,对于一些 coding 的朋友,由于接触不到一线实战架构设计,想必并不是很了解。 刚好,趁着这段时间,整理了一套 “ 微服务+分布式 ” 的视频干货,讲解很透彻。今天分享给大家。这份资料 尤其适合 以下人群: 1.没有用过微服务技术,只会用传统的 SSM 框架 2.用过 Spring Cloud、Dubbo等技术,但是只限于使用,遇到问题基本无法解决 3.从来没有系统学习微服务、分布式架构,觉得架构设计是遥不可及的 4.对于微服务、分布式技术有所了解,但尚没有设计高可用高并发的实践经历 学完这份视频你将获得哪些收获? 理解当下最火热的微服务架构原理及其开源框架; 触及一线大厂所配备的微服务核心技术内幕知识; 对照自己掌握知识点进行查漏补缺,帮助扫除知识盲区、重构知识体系。 视频围绕“ 如何设计高可用高并发的微服务架构? ”的主题

装饰者模式的另一种思路

前提是你 提交于 2020-08-17 04:00:36
今天看dubbo源码,发现一个很不错的装饰者设计模式;wrapperClasses 记录下; /** * @Auther: penghaozhong * @Date: 2020-05-21 15:53 */ public interface Test { String say(String name); } public class Test1 implements Test { private Test test; public Test1(Test test) { this.test = test; } @Override public String say(String name) { System.out.println("Test1"); return test.say(name); } } public class Test2 implements Test { private Test test; public Test2(Test test) { this.test = test; } @Override public String say(String name) { System.out.println("Test2"); return test.say(name); } } public class Test3 implements Test {

如何提升微服务的幸福感

ⅰ亾dé卋堺 提交于 2020-08-17 03:00:43
前言 随着微服务的流行,越来越多公司使用了微服务框架,微服务以其的高内聚、低耦合等特性,提供了更好的容错性,也更适应业务的快速迭代,为开发人员带来了很多的便利性。但是随着业务的发展,微服务拆分越来越复杂,微服务的治理也成了一个比较令人头疼的问题,我相信下面这些场景大家或多或少都遇到过。 场景一: 发布是天大的事情,每一次的发布,都会出现执行到一半的请求中断掉,上游继续调用已经下线的节点导致报错。发布时收到各种报错,同时还影响用户的体验。发布后又需要修复执行到一半的脏数据。 上述场景还是在新版本没有任何问题的情况下,如果新版本有问题,则会导致大量业务直接请求到有问题的新版本,轻则修复数据,重则严重影响用户体验,甚至产生资损。最后不得不每次发版都安排在凌晨两三点发布,心惊胆颤,睡眠不足,苦不可言。 场景二:大半夜某个服务节点出现异常,上游仍旧不断地调用,出现很多异常和各种报警短信。被报警吵醒后,想直接在线上修复,有点难,想保留现场又害怕拖垮整个应用,只好先重启为上。 但是这只是治标不治本的方式,因为很难复现从而无法有效定位,可能明天又被吵醒,继续重启。上述场景还是建立在报警系统比较完善的情况下,如果没有完善的报警系统,严重情况可能整个业务系统都被单机异常拖垮。 场景三:公司业务壮大了,部门组织变复杂后,微服务模块越来越多。我不清楚发布的服务到底被谁调用了

线程隔离浅析

不打扰是莪最后的温柔 提交于 2020-08-17 02:28:14
前言 随着微服务的流行,单体应用被拆分成一个个独立的微进程,可能一个简单的请求,需要多个微服务共同处理,这样其实是增加了出错的概率,所以如何保证在单个微服务出现问题的时候,对整个系统的负面影响降到最低,这就需要用到我们今天要介绍的线程隔离。 线程模型 在介绍线程隔离之前,我们先了解一下主流容器,框架的线程模型,因为微服务是一个个独立的进程,之间的调用其实就是走网络io,网络io的处理容器如tomcat,通信框架如netty,微服务框架如dubbo,都很好的帮我们处理了底层的网络io流,让我们可以更加的关注于业务处理; Netty Netty是基于java nio的高性能通信框架,使用了 主从多线程模型 ,借鉴 Netty系列之 Netty线程模型 的一张图片如下所示: 主线程负责认证,连接,成功之后交由从线程负责连接的读写操作,大致如下代码: EventLoopGroup bossGroup = new NioEventLoopGroup( 1 ); EventLoopGroup workerGroup = new NioEventLoopGroup(); ServerBootstrap b = new ServerBootstrap(); b. group (bossGroup, workerGroup); 主线程是一个单线程,从线程是一个默认为cpu*2个数的线程池

Dubbo 负载均衡策略和集群容错策略?

前提是你 提交于 2020-08-16 22:29:02
面试题 dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢? 面试官心理分析 继续深问吧,这些都是用 dubbo 必须知道的一些东西,你得知道基本原理,知道序列化是什么协议,还得知道具体用 dubbo 的时候,如何负载均衡,如何高可用,如何动态代理。 说白了,就是看你对 dubbo 熟悉不熟悉: dubbo 工作原理:服务注册、注册中心、消费者、代理通信、负载均衡; 网络通信、序列化:dubbo 协议、长连接、NIO、hessian 序列化协议; 负载均衡策略、集群容错策略、动态代理策略:dubbo 跑起来的时候一些功能是如何运转的?怎么做负载均衡?怎么做集群容错?怎么生成动态代理? dubbo SPI 机制:你了解不了解 dubbo 的 SPI 机制?如何基于 SPI 机制对 dubbo 进行扩展? 面试题剖析 dubbo 负载均衡策略 random loadbalance 默认情况下,dubbo 是 random load balance ,即 随机 调用实现负载均衡,可以对 provider 不同实例 设置不同的权重 ,会按照权重来负载均衡,权重越大分配流量越高,一般就用这个默认的就可以了。 roundrobin loadbalance 这个的话默认就是均匀地将流量打到各个机器上去,但是如果各个机器的性能不一样,容易导致性能差的机器负载过高。所以此时需要调整权重

2020.7.3|Java进阶架构师30大专题,共600篇优质文章合集!

对着背影说爱祢 提交于 2020-08-16 17:47:51
  大家好,我是师长,今天是2020年7月3日,2020年正式过了一半,感慨的话不必多说,这两个月来,又积累了许多优质的文章,且新增了两三个全新专题,如 2020Java面试题库、JVM调优专题等, 累计达600+。预计下次更新时间是 9月1号 ( 两个月一整理 )。   本篇发表后,也会放在公众号菜单栏的【 左下角 】,大家可以 星标公众号, 经常光顾。      如果最近两个月,文章对你有帮助,那么,请给我人间三大真情: 在看 、 留言 和 转发 一条龙服务,以示鼓励。    Java进阶架构师   师长的公众号专注的是: 底层原理、架构设计、源码阅读、微服务、高并发、高可用、JVM调优、BAT面试专栏等进阶架构专栏 。毫不夸张地说,Java相关的技术栈都一网打尽!    注: 标红 的链接为本次新增更新    零、2020Java面试题库 新专题   面试题库目前暂定八个梯度迭代更新:   第一梯度:计算机组成原理、操作系统原理、网络通信原理、数据结构和算法;   第二梯度:Java SE基础、JavaWeb相关、Java 工具(Maven/git等)、JDK 工具、Java 各版本新特性、JVM 相关如内存模型和、GC 算法、JVM 性能调优、设计模式;   第三梯度:Spring、Spring MVC、Springboot、Spring Cloud、Mybatis

首发:全面到难以置信的485页Java面试题整理,1000+真题赶紧收藏

╄→尐↘猪︶ㄣ 提交于 2020-08-16 17:26:47
本文是年更文章,是专门为了金九银十而整理的一套年度级面试题;以后每年都会以这个为基础更新内容。星光不问赶路人,时光不负有心人; 愿每位程序员朋友都能找到心仪的工作。 这份面试题内容涵盖: Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈。 收藏这份面试题,为你赢得更多机会。 篇幅有限,我会尽可能列出所有面试题,答案文末获取。 MyBatis 什么是MyBatis? MyBatis的优点 MyBatis框架的缺点 MyBatis框架适用场合 MyBatis与Hibernate有哪些不同? #{}和${}的区别是什么? 当实体类中的属性名和表中的字段名不一样,怎么办? 模糊查询like语句该怎么写? 通常一个Xml映射文件,都会写-个Dao接口与之对应,请问,这个Dao接口的工作原理是什么? MyBatis是如何进行分页的?分页插件的原理是什么? MyBatis:是如何将sq|执行结果封装为目标对象并返回的?都有哪些映射形式? 如何执行批量插入? 如何获取自动生成的(主)键值? 在mapper中如何传递多个参数? MyBatis动态SQL有什么用?执行原理?有哪些动态SQL? Xml映射文件中