Dubbo

好程序员Java培训面试进阶知识点之微服务框架

和自甴很熟 提交于 2020-04-28 20:26:34
  好程序员Java培训面试进阶知识点之微服务框架,微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。随着越来越多的人加入到Java开发行列,企业对求职者的技能要求也在提高,其中微服务就是一个非常重要的门槛。接下来好程序员Java培训小编就给大家简单梳理求职面试必考的微服务框架知识。   1、微服务哪些框架   1)Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。2)它是Spring Source的产物,Spring社区的强大背书可以说是Java企业界最有影响力的组织了,除了Spring Source之外,还有Pivotal和Netfix是其强大的后盾与技术输出。其中Netflix开源的整套微服务架构套件是Spring Cloud的核心。   2、前后端分离是如何做的   在前后端分离架构中,后端只需要负责按照约定的数据格式向前端提供可调用的API服务即可。前后端之间通过HTTP请求进行交互,前端获取到数据后,进行页面的组装和渲染,最终返回给浏览器。   3、RPC的实现原理   首先需要有处理网络连接通讯的模块,负责连接建立、管理和消息的传输。其次需要有编解码的模块,因为网络通讯都是传输的字节码,需要将我们使用的对象序列化和反序列化。剩下的就是客户端和服务器端的部分,服务器端暴露要开放的服务接口

微服务架构深度解析与最佳实践(全篇汇总,2.4万字)

[亡魂溺海] 提交于 2020-04-28 20:08:36
微服务架构的概念,现在对于大家应该都不陌生,无论使用 Apache Dubbo、还是 Spring Cloud,都可以去尝试微服务,把复杂而庞大的业务系统拆分成一些更小粒度且独立部署的 Rest 服务。但是这个过程,具体应该怎么做?现有的条件下到底要不要做微服务?服务拆分成什么粒度才是合适的?遗留的老系统需要如何考虑重构改造?有哪些坑需要我们注意?系统怎么在分布式服务下实现数据的一致性和服务的高可用可伸缩?拆分的过程中系统数量增多,测试、部署、运维、监控,又应该如何处理? 文章共分为7部分,每部分大概在3000-4000字,全文2.4万字,汇总如下: 微服务架构深度解析与最佳实践 - 第一部分:微服务发展历程和定义 微服务架构深度解析与最佳实践 - 第二部分:四个特点和六个能力、常见框架 微服务架构深度解析与最佳实践 - 第三部分:微服务的使用场景和相关问题 微服务架构深度解析与最佳实践 - 第四部分:如何拆分微服务和改造遗留系统 微服务架构深度解析与最佳实践 - 第五部分:微服务的性能、一致性和扩展性 微服务架构深度解析与最佳实践 - 第六部分:微服务的测试部署和运维监控 微服务架构深度解析与最佳实践 - 第七部分:总结与参考材料 本文将从这些问题的深度分析出发,阐述微服务架构落地的一些设计原则和利弊取舍,结合微服务架构过程的很多最佳实践经验,希望给读者带来一定的启发和思考

(Java岗)连面拼多多、美团、头条、快手后给大家划下重点面试问题

流过昼夜 提交于 2020-04-28 19:45:56
众所周知今年大市场不太好,所以我身先士卒给大家打个样,帮大家面试带题(这个是不是和直播带货有点像呢?),带了一些重点回来,下文不会涵盖所有知识点,但是会提取一些关键问题点。希望对大家今年求职有所帮助,先罗列再分析。 拼多多 算法题:返回字符串中包含的 IP 地址数 Dubbo VS Spring Cloud 原理(网关、轮询、协议)与不同 幂等的设计 分布式事务(TCC、2PC),RocketMQ 的分布式事务实现原理 MySQL 的索引原理、分库分表原理 AQS 原理、Lock 和 Sync 的原理与区别、轻量级锁重量级锁 美团 算法题:字符串相加 Dubbo VS Spring Cloud 原理与不同 分布式主键的设计方案与原理 JVM(CMS原理和优缺点、新生代晋升原则) 分布式事务, RocketMQ 的分布式事务原理 MySQL 索引、锁、幻读的原理,慢 SQL 治理的原则 快手 算法题:手写 topN 分布式锁的实现和原理 MySQL 为什么有时不能命中索引? 可重复读、幻读原理,索引的设计原理 缓存设计,击穿、热点等策略和原理 头条 算法题:电话号码的字母组合 分布式锁的实现原理和锁续期 分布式事务的实现方案和原理 Dubbo VS Spring Cloud 原理与不同 Netty,Nio 原理 综上所述,我们不难看出来一些共性 算法题必考,所以 LeetCode

问题总结(一)

自古美人都是妖i 提交于 2020-04-28 17:36:40
dubbo分层架构设计 Spring bean加载流程 Spring循环依赖问题 消息中间件重复消费问题 Dubbo消费注册逻辑 ZK脑裂问题 脑裂(split-brain)就是“大脑分裂”,也就是本来一个“大脑”被拆分了两个或多个“大脑”,我们都知道,如果一个人有多个大脑,并且相互独立的话,那么会导致人体“手舞足蹈”,“不听使唤”。 过半机制 在领导者选举的过程中,如果某台zkServer获得了超过半数的选票,则此zkServer就可以成为Leader了 选举的过程中为什么一定要有一个过半机制验证? 因为这样不需要等待所有zkServer都投了同一个zkServer就可以选举出来一个Leader了,这样比较快,所以叫快速领导者选举算法 跳表数据结构 链表加多级索引的结果就是跳表,是一种用空间换时间的设计思路 原始链表 搜索引擎设计 正排索引 一个唯一的编号作为 ID,然后使用哈希表将 ID 作为键(Key),把的内容作为键对应的值(Value)。这样,我们就能在 O(1) 的时间代价内,完成对指定 key 的检索。这样一个以对象的唯一 ID 为 key 的哈希索引结构,叫作正排索引(Forward Index) 倒排索引 这样,我们就建立了一个哈希表,根据关键字来查询这个哈希表,在 O(1) 的时间内,我们就能得到包含该关键字的文档列表

阿里巴巴分布式服务框架Dubbo使用简易教程

删除回忆录丶 提交于 2020-04-28 12:51:47
Dubbo是什么? Dubbo[ ]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 Dubbo能做什么? 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。 ---------------------------------------------------------------------------------------------------------------------------------------------------- **********************************

参与 Seata 社区到 go 与 Seata 的邂逅

百般思念 提交于 2020-04-28 12:44:03
  众所周知,这几年微服务、云原生提得很火热。2017年,当时公司的领导刘巍,敏锐得提出公司转型微服务。那时,提到微服务大家一头雾水,经过两年的实践,逐渐有了一些心得。但有个问题始终萦绕在微服务开发者的头上,分布式事务到底如何解决,有没有比较完美的方案?二阶段提交、柔性事务、最终一致性?   2019 年,我注意到阿里巴巴的同学在社区调研分布式事务需求,立即加入了社区群。在 seata 0.2 版本的时候,当时还不叫 seata,叫 fescar,我看到 seata 代码仓库里只有 dubbo 结合 seata 的 sample,随即在博客园写了一篇 spring boot 如何结合 seata 的博文 Spring Boot微服务如何集成seata解决分布式事务问题? ,这篇文章后来被收录到 seata wiki 里面,收获到了 18000+ 的阅读量,是我阅读量最高的一篇博客。   后来,由于工作比较忙,屡次想参与 seata 贡献,发现了几个 bug,本来想修改来着,结果看社区里边已经有人在做了😂。   由于接触微服务,自然而然接触到 k8s 技术,接触到云原生,接触到 golang。个人对 golang 比较感兴趣,比较看好它的未来。看到社区里面也有关于 seata go client 的呼声,遂萌生了打造 golang 版 seata 的想法。   有人问:喂,同学

1、dubbo从入门到放弃 dubbo-admin本地编译打包

最后都变了- 提交于 2020-04-28 11:59:14
因为zookeeper只是一个黑框,我们无法看到是否存在了什么提供者或消费者,这时就要借助Dubbo-Admin管理平台来实时的查看,也可以通过这个平台来管理提者和消费者。 dubbo-admin.war强烈建议自己编译一个,网上找的基本都不行,试了很多个,最后还是自己来搞,编译的过程如下,一定在安装maven和jdk! dubbo的所有源码可在 https://github.com/alibaba/dubbo 上下载。下好之后解压 解压后的文件内容,进入dubbo-admin. 通过cmd进入dubbo-admin目录,输入命令 然后输入命令 mvn package -Dmaven.skip.test=true 这里要自己把maven的环境变量配置好,这里的-Dmaven.skip.test表示不打包测试包。然后结果如下,表示打包成功 再打开项目的文件所在位置:E:\下载\dubbo-master\dubbo-master\dubbo-admin\target target表示构建的本地路径,打开,里面有个文件dubbo-admin-2.5.4-SNAPSHOT.war表示打包成功,这个文件得放在Tomcat下才能运行 1.2、dubbo-admin安装 dubbo-admin已打包成功,接下来就容易很多了 1. 安装 将 dubbo-admin-2.5.4-SNAPSHOT

dubbo-admin管理平台搭建

妖精的绣舞 提交于 2020-04-28 11:58:49
通过dubbo-admin可以对消费者和提供者进行管理 下载dubbo-admin dubbo-admin的下载,可自行到官网下载: https://github.com/alibaba/dubbo 我们只关心dubbo-admin这个目录 image.png 打包war 方式一:idea中maven中找到dubbo-admin直接package 方式二:进入dubbo-admin这个文件目录 运行命令: mvn package -Dmaven .skip .test = true 部署tomcat 得到dubbo-admin-2.5.4-SNAPSHOT.war,放到tomcat的webapps目录下,修改端口,避免和本地端口冲突 修改配置文件 修改dubbo-admin的配置文件:dubbo.properties dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.admin.root.password=root dubbo.admin.guest.password=guest 运行 启动dubbo-admin前,要先启动zookeeper,如果尚未安装zookeeper,自行百度安装 启动tomcat 访问地址: http://localhost:8090/dubbo-admin-2.5.4-SNAPSHOT/

最新的dubbo和zookeeper整合的问题

馋奶兔 提交于 2020-04-28 11:17:27
最新的dubbo和zookeeper整合的问题 生活本不易,流人遂自安 博主最新在做小项目练手,在进行dubbo和zookeeper整合的时候遇到了一些问题,在这里这些问题做个小总结吧。 首先需要说明的是,这次使用的都是 最新的版本 。过一下我自己的配置,dubbo 2.6.6,zookeeper 3.4.13,Spring 5.1.5.RELEASE dubbo-admin的搭建 ​ 从dubbo2.6版本之后的dubbo-admin已经迁移到了另外一个分支,这是 dubbo-admin 新GitHub的地址。进去之后可以看到发布了两个release版本,下载 Dubbo OPS 0.1 的即可。 最新的Dubbo Admin 0.2.0是Pre release版本,刚发布不久QAQ 将其解压后,进入文件夹中,便可以 mvn install -Dmaven.test.skip=true 编译了。【当然你需要先按安装JDK和Maven】然后去编译输出的文件夹找到 dubbo-admin-0.1 jar ,注意不是dubbo-admin-distribution-0.1 jar。 dubbo-admin连接的zookeeper地址的修改可以到dubbo-admin-server\src\main\resources,修改application.properties文件中连接地址即可。

dubbo2.4.11源码编译

空扰寡人 提交于 2020-04-28 09:31:08
本文以dubbo2.4.11源码编译和打包例 dubbo官网:http://dubbo.io/ 源码:https://github.com/alibaba/dubbo 用户指南:http://dubbo.io/User+Guide-zh.htm 开发指南: http://dubbo.io/Developer+Guide-zh.htm 按官方说明2.4.X是GA稳定版本,去https://github.com/alibaba/dubbo/releases下载最新的2.4.11 解压到D:\project\dubbo\dubbo-dubbo-2.4.11 在编译dubbo前,先执行下面操作 1 、opensesame依赖问题,可能会报Non-resolvable parent POM: Could not transfer artifact com.alibaba:opensesame:pom:2.0 from/to opensesame.releases (http://code.alibabatech.com/mvn/releases) 的错误。 打开https://github.com/alibaba/opensesame,下载opensesame(主要是pom.xml文件),解压在D:\project\dubbo\opensesame-master目录 在D:\project