Dubbo

Dubbo对Spring Cloud说:来老弟,我要拥抱你

喜你入骨 提交于 2020-08-11 21:43:08
项目地址 https://github.com/yinjihuan/kitty-cloud 前言 Kitty Cloud 开源后有以为朋友在 GitHub 上给我提了一个 issues,问为什么项目中要同时集成 Feign 和 Dubbo 两个框架来调用服务。今天就来聊一聊这个问题,然后讲下在 Kitty Cloud 中如何切换使用两种调用方式。 为什么要支持两种协议? 关于支持两种协议,我这个是一个开源项目,主要还是为了让使用者有更多的选择。当然框架本身不是我开发的,我只是使用者而已。 一种协议更统一化,两种协议混着用也不是不可以,具体还是看实际需求。比如你们内部有个 ID 分发的服务,调用量很高,就是对性能有这极致的要求。那么这个场景你就可以用 Rpc 来代替 Http 了。其他的正常使用 Http 协议就行,特殊场景的就用 Rpc 协议,互补而已。 用 Http 最好的点在于简单,传输内容就是文本,调试什么的都很方便。比如我要单独测试某个服务的接口,直接 PostMan 上调用这个 Http 接口就可以了,或者用 Swagger。 如果是 Dubbo 的 Rpc, 我可能需要用 telnet 来调用。 还有就是网关层的转发,如果是 Http 协议,直接转发过去了。如果是 Rpc 协议,网关内部需要转特殊处理,当然目前也有支持 Rpc 的网关。如果我们是两种协议

聊聊dubbo-go的leastActiveLoadBalance

无人久伴 提交于 2020-08-11 21:06:36
序 本文主要研究一下dubbo-go的leastActiveLoadBalance leastActiveLoadBalance dubbo-go-v1.4.2/cluster/loadbalance/least_active.go const ( // LeastActive ... LeastActive = "leastactive" ) func init() { extension.SetLoadbalance(LeastActive, NewLeastActiveLoadBalance) } type leastActiveLoadBalance struct { } // NewLeastActiveLoadBalance ... func NewLeastActiveLoadBalance() cluster.LoadBalance { return &leastActiveLoadBalance{} } leastActiveLoadBalance的NewLeastActiveLoadBalance方法创建leastActiveLoadBalance Select dubbo-go-v1.4.2/cluster/loadbalance/least_active.go func (lb *leastActiveLoadBalance) Select(invokers

微服务技术栈:常见注册中心组件,对比分析

瘦欲@ 提交于 2020-08-11 18:35:08
本文源码: GitHub·点这里 || GitEE·点这里 一、注册中心简介 1、基础概念 在分布式架构的系统中注册中心这个概念就已经被提出了,最经典的就是Zookeeper中间件。 微服务架构中,注册中心是最核心的基础服务之一,注册中心可以看做是微服务架构中的通信中心,当一个服务去请求另一个服务时,通过注册中心可以获取该服务的状态,地址等核心信息。 服务注册主要关系到三大角色:服务提供者、服务消费者、注册中心。 2、流程和原理 基础流程 服务启动时,将自身的网络地址等信息注册到注册中心,注册中心记录服务注册数据。 服务消费者从注册中心获取服务提供者的地址,并通过地址和基于特定的方式调用服务提供者的接口。 各个服务与注册中心使用一定机制通信。如果注册中心与服务长时间无法通信,就会注销该实例,这也称为服务下线,当服务重新连接之后,会基于一定的策略在线上线。 服务地址相关信息发生变化时,会重新注册到注册中心。这样,服务消费者就无需手工维护提供者的相关配置。 核心功能 通过上面的基本流程,不难发现一个注册中心需要具备哪些核心功能: 服务发现 服务发现是指服务在启动后,注册到注册中心,服务方提供自身的元数据,比如IP地址、端口、运行状况指标的Uri 、主页地址等信息。 服务记录 记录注册中心的服务的信息,例如服务名称、IP地址、端口等。服务消费方基于查询获取可用的服务实例列表。

2020秋招到了,想要跳槽吗?这套面试法宝可为你助力

我的梦境 提交于 2020-08-11 18:23:28
想要跳槽,你得具备以下条件: 具备很强的专业知识,牛逼,有信心快速找到下一家适合你的公司. 然后有一定存款,可以保证当下辞职后,生活方面不愁. 当然学习是很重要的,不努力提升自己,加强自己的专业知识,后面就算是跳槽成功也是很容易被PASS掉,现实是残 酷的,可千万不要因为找到新工作就放松警惕,做咸鱼. 那今天给你们分享这千道面试题,希望在找工作或者是想要跳槽的朋友都可以刷刷,准备充足,随时应战,顺利拿offer !!!! MyBatis 面试题 什么是 Mybatis? Mybaits 的优点: MyBatis 框架的缺点: MyBatis 框架适用场合: MyBatis 与 Hibernate 有哪些不同? #{}和${}的区别是什么? 当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 模糊查询 like 语句该怎么写? 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗? Mybatis 是如何进行分页的?分页插件的原理是什么? Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式? 如何执行批量插入? 如何获取自动生成的(主)键值? 在 mapper 中如何传递多个参数? Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql? Xml

Spring Cloud 和 Dubbo 哪个会被淘汰?

走远了吗. 提交于 2020-08-11 16:05:53
今天在知乎上看到了这样一个问题:Spring Cloud 和 Dubbo哪个会被淘汰?看了几个回答,都觉得不在点子上,所以要么就干脆写篇小文瞎逼叨一下。 简单说说个人观点 我认为这两个框架大概率会长期都存在。 时至今日,这两个框架放到现在,已经不存在谁取代谁这一说了。由于Spring Cloud Alibaba的出现,Dubbo已经很好的融入到了Spring Cloud体系,所以围绕Spring Cloud生态的各种周边产品都是可以无缝整合到一起来玩的。 Dubbo无缝整合Spring Cloud生态是啥意思呢?主要两方面: 如果你原来是Dubbo用户,那么现在可以把Spring Cloud引入进来。轻松便捷地整合Spring Cloud的配置中心、注册中心以及诸如分布式跟踪等好用的周边产品来管理你的分布式服务集群,与其他Spring Cloud Netflix用户享受同等的生态优势。 如果你原来不是Dubbo用户,但是你的场景在使用HTTP调用时候觉得不够效率不够经济,那么就可以考虑引入Dubbo,来提升你服务减调用的RPC性能。 到这里,可能有的看官要说了,你都是站在融合的角度来说的,我就是不喜欢Dubbo那种接口依赖的方式,坚决捍卫Spring Cloud原始生态! 行!这种坚持也是可以的,并没有什么错,通过HTTP契约方式管理服务接口,不用接口提供方的JAR

面试官必问面试题汇总

ε祈祈猫儿з 提交于 2020-08-11 14:45:18
面试题一 一、描述下数据库中的事务–ACID各个的特点。 原子性:事务中的操作要么全部成功要么全部失败。 一致性:事务前后数据的完整性必须保持一致。 隔离性:多个并发的事务之间是相互隔离的,互不干扰的。 持久性:事务提交后,数据是永久改变的。 二、什么是springboot?你们公司是用的哪个版本? SpringBoot是Spring推出用于解决传统框架配置文件冗余,装配组件繁杂的基于Maven的解决方案,旨在快速搭建单个微服务。 版本号:2.1.6 三、什么是redis? Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 四、如何理解springcloud微服务项目中,eureka,provider,consumer它们之间的关系? eureka:提供服务注册于发现 provider:服务提供方法将自身注册到eureka,让消费方找到 consumer:服务消费方从eureka获取注册服务列表,能够消费服务 五、mysql默认的存储引擎是什么? Mysql在V5.1之前默认存储引擎是MyISAM;在此之后默认存储引擎是InnoDB。 MyISAM不支持事务,InnoDB支持事务。 MySIAM不支持外键,InnoDB支持外键, MySIAM支持全文索引,InnoDB不支持全文索引。 六、什么是跨域? 要了解跨域,先要说说同源策略。所谓同源是指

同时拿到了Google和阿里的offer,纠结去哪个?

旧时模样 提交于 2020-08-11 12:33:44
近日,有网友在某社交平台发帖问大家:“同时拿到了Google和阿里的offer,纠结去哪个?” 有不少网友看到这个帖子后,都觉得这是一个送分题,根本无需选择。 @有网友说: 快放开google,让我来 @有网友说: 这是一道送分题你非搞成送命题 @有网友直言: 你这是在麻省理工和杭州师范之间纠结啊。 @有网友调侃: 来阿里不出一个月保准你后悔 @有网友也笑着回: 果断阿里啊,不是每个人都可以996,这是前世修来的福报 不过,也有网友就职友的提供的信息,理性分析了一下。 @有网友比较理性的说: 要看岗位吧 @有网友说: 当然去Google啊 @前阿里员工调侃: 兄弟想啥呢?非要体验生活的毒打? @还有网友提出疑问: 谷歌为啥不能选择国内岗位呢,是因为国内招人太少或者太难得原因吗 该职友回复大家的疑问说: 其实有点不想出国,毕竟年龄不小了,这也是自己在百度待了6年后,第一次异动。 @也有猎头来提建议了: 作为一名负责任的猎头,我建议可以去谷歌,如果你喜欢挑战和相对轻松的工作环境,H1B可以待几年,但想拿到绿卡就需要更长的时间……而且华人工程师一般到L6差不多到顶了,回来阿里拿9, 你从国内过去还要适应语言,文化这些问题,当然了,方法总比问题多 职场多艰辛,选择须谨慎。 大家也都知道:选择比努力更重要。 如上面提到的职友,称自己年龄已经不年轻了,但其实

Java多线程学习总结(4)——ThreadPoolExecutor 线程池的拒绝策略学习总结

时光总嘲笑我的痴心妄想 提交于 2020-08-11 11:37:52
前言 谈到java的线程池最熟悉的莫过于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的这个api,大大的简化了多线程代码的开发。而不论你用FixedThreadPool还是CachedThreadPool其背后实现都是ThreadPoolExecutor。ThreadPoolExecutor是一个典型的缓存池化设计的产物,因为池子有大小,当池子体积不够承载时,就涉及到拒绝策略。JDK中已经预设了4种线程池拒绝策略,下面结合场景详细聊聊这些策略的使用场景,以及我们还能扩展哪些拒绝策略。 池化设计思想 池话设计应该不是一个新名词。我们常见的如java线程池、jdbc连接池、redis连接池等就是这类设计的代表实现。这种设计会初始预设资源,解决的问题就是抵消每次获取资源的消耗,如创建线程的开销,获取远程连接的开销等。就好比你去食堂打饭,打饭的大妈会先把饭盛好几份放那里,你来了就直接拿着饭盒加菜即可,不用再临时又盛饭又打菜,效率就高了。除了初始化资源,池化设计还包括如下这些特征:池子的初始值、池子的活跃值、池子的最大值等,这些特征可以直接映射到java线程池和数据库连接池的成员属性中。 线程池触发拒绝策略的时机 和数据源连接池不一样,线程池除了初始大小和池子最大值,还多了一个阻塞队列来缓冲

Arthas | 定位线上 Dubbo 线程池满异常

我是研究僧i 提交于 2020-08-11 10:32:54
作者 | 徐靖峰 阿里云高级开发工程师 前言 Dubbo 线程池满异常应该是大多数 Dubbo 用户都遇到过的一个问题,本文以 Arthas 3.1.7 版本为例,介绍如何针对该异常进行诊断,主要使用到 dashboard / thread 两个指令。 推荐使用 Arthas 方式一: 推荐使用 IDEA 插件下载 Cloud Toolkit 来使用 Arthas Cloud Toolkit 是阿里云发布的免费本地 IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,可以将本地应用一键部署到任意服务器,甚至云端(ECS、EDAS、ACK、ACR 和 小程序云等);并且还内置了 Arthas 诊断、Dubbo工具、Terminal 终端、文件上传、函数计算 和 MySQL 执行器等工具。不仅仅有 IntelliJ IDEA 主流版本,还有 Eclipse、Pycharm、Maven 等其他版本。 方式二: 直接下载 Dubbo 线程池满异常介绍 理解线程池满异常需要首先了解 Dubbo 线程模型,官方文档: http://dubbo.apache.org/zh-cn/docs/user/demos/thread-model.html 。 简单概括下 Dubbo 默认的线程模型:Dubbo 服务端每次接收到一个 Dubbo 请求,便交给一个线程池处理,该线程池默认有

SpringBoot + Spring Cloud Eureka 服务注册与发现

家住魔仙堡 提交于 2020-08-11 09:59:31
什么是Spring Cloud Eureka Eureka是Netflix公司开发的开源服务注册发现组件,服务发现可以说是微服务开发的核心功能了,微服务部署后一定要有服务注册和发现的能力,Eureka就是担任这个角色。如果你用过Dubbo的话,Dubbo里服务注册和发现就是通过Zookeeper框架完成的。 Eureka 目前是2.2.x版本,目前官方已经宣布不再维护和更新了,不过Eureka 做注册中心已经在生产环境中大规模使用了,可以说很稳定了。从我个人的角度看,目前大家使用的更多的是阿里的 Nacos 和 Consul 这两个组件实现了不止服务发现和注册,微服务开发不用再去依赖更多的组件和框架。这篇文章模拟一下Eureka Server集群和服务提供者集群和服务消费。 版本说明 SpringCloud + SpringBoot开发微服务并不是版本越新越好,Spring Cloud官方提供了一个版本对应关系。目前最新的就是Hoxton, 对应SpringBoot 2.2.x版本。 准备工作 新建父工程, 主要约定SpringCloud, SpringBoot版本号,我使用的是Hoxton.SR1, SpringBoot2.2。 新建5个子Module,这里两个Eureka Server,两个Service,一个consumer, 两个Eureka