Dubbo

Kubernetes实战总结

百般思念 提交于 2020-05-07 13:05:15
>>> 目录 <<< 一、概述 二、核心组件 三、基本概念 四、系统架构 五、镜像制作 六、服务编排 七、持续部署 八、故障排查 >>> 正文 <<< 一、 概述 Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。Kubernetes特点 : ☛ 可移植: 支持公有云,私有云,混合云,多重云 ☛ 可扩展: 模块化, 插件化, 可挂载, 可组合 ☛ 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展 二、 核心组件 1) 主要组件 ● etcd : 保存了整个集群的状态; ● apiserver : 提供了资源操作的唯一入口,并提供访问控制、API注册和发现等机制; ● scheduler : 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上; ● controller manager : 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等; ● kubelet : 负责维护容器的生命周期,同时也负责数据卷(CVI)和网络(CNI)的管理; ● kube-proxy : 负责为Service提供集群内部的服务发现和负载均衡; ● Container runtime : 负责镜像管理以及Pod和容器的真正运行(CRI); 2) 扩展组件 ● kube-dns : 负责为整个集群提供DNS服务 ●

2020 java Dubbo面试题及答案(最全版本持续更新)

╄→гoц情女王★ 提交于 2020-05-07 12:55:05
前言 涵盖各大公司会问到的面试点,同时随着版本的升级,可能也会有一些面试题更新,也会同步保持更新,因为篇幅原因(其实是我懒,哈哈)所以列了一部分答案,所有的答案见下文,总共485页合计20个技术点,文末自取pdf. 1、为什么要用 Dubbo? 随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术, 如对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架。就这样为分布式系统的服务治理框架就出现了,Dubbo 也就这样产生了。 2、Dubbo 的整体架构设计有哪些分层? 接口服务层(Service):该层与业务逻辑相关,根据 provider 和 consumer 的业务设计对应的接口和实现 配置层(Config):对外配置接口,以 ServiceConfig 和 ReferenceConfig 为中心 服务代理层(Proxy):服务接口透明代理,生成服务的客户端 Stub 和 服务端的 Skeleton,以 ServiceProxy 为中心,扩展接口为 ProxyFactory 服务注册层(Registry):封装服务地址的注册和发现,以服务 URL 为中心,扩展接口为 RegistryFactory、Registry

ZooKeeper面试题(2020最新版)

*爱你&永不变心* 提交于 2020-05-07 11:50:13
文章目录 1. ZooKeeper 是什么? 2. ZooKeeper 提供了什么? 3. Zookeeper 文件系统 4. Zookeeper 怎么保证主从节点的状态同步? 5. 四种类型的数据节点 Znode 6. Zookeeper Watcher 机制 -- 数据变更通知 7. 客户端注册 Watcher 实现 8. 服务端处理 Watcher 实现 9. 客户端回调 Watcher 10. ACL 权限控制机制 11. Chroot 特性 12. 会话管理 13. 服务器角色 14. Zookeeper 下 Server 工作状态 15. 数据同步 16. zookeeper 是如何保证事务的顺序一致性的? 17. 分布式集群中为什么会有 Master主节点? 18. zk 节点宕机如何处理? 19. zookeeper 负载均衡和 nginx 负载均衡区别 20. Zookeeper 有哪几种几种部署模式? 21. 集群最少要几台机器,集群规则是怎样的?集群中有 3 台服务器,其中一个节点宕机,这个时候 Zookeeper 还可以使用吗? 22. 集群支持动态添加机器吗? 23. Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是永久的? 24. Zookeeper 的 java 客户端都有哪些? 25. chubby 是什么,和

Dubbo 扩展点加载机制:从 Java SPI 到 Dubbo SPI

大兔子大兔子 提交于 2020-05-07 01:49:24
SPI 全称为 Service Provider Interface,是一种服务发现机制。当程序运行调用接口时,会根据配置文件或默认规则信息加载对应的实现类。所以在程序中并没有直接指定使用接口的哪个实现,而是在外部进行装配。 要想了解 Dubbo 的设计与实现,其中 Dubbo SPI 加载机制是必须了解的,在 Dubbo 中有大量功能的实现都是基于 Dubbo SPI 实现解耦,同时也使得 Dubbo 获得如此好的可扩展性。 Java SPI 通过完成一个 Java SPI 的操作来了解它的机制。 创建一个 AnimalService 接口及 category 方法 创建一个实现类 Cat 创建 META-INF/services 目录,并在该目录下创建一个文件,文件名为 AnimalService 的全限定名作为文件名 在文件中添加实现类 Cat 的全限定名 Animal 接口 public interface AnimalService { void category(); } Cat 实现类 public class Cat implements AnimalService { @Override public void category() { System.out.println("cat: Meow ~"); } } 在 META-INF/services 目录下的

ServiceMesh(服务网格)

百般思念 提交于 2020-05-06 02:40:44
今年,ServiceMesh(服务网格)概念在社区里头非常火,有人提出2018年是ServiceMesh年,还有人提出ServiceMesh是下一代的微服务架构基础。作为架构师,如果你现在还不了解ServiceMesh的话,是否感觉有点落伍了?那么到底什么是ServiceMesh?它诞生的背景是什么?它解决什么问题?企业是否适合引入ServiceMesh?根据近年在一线互联网企业的实践和思考,从个人视角出发,我为大家一一解答这些问题。 微服务架构的核心技术问题 在业务规模化和研发效能提升等因素的驱动下,从单块应用向微服务架构的转型(如下图所示),已经成为很多企业(尤其是互联网企业)数字化转型的趋势。 图片发自简书App 在微服务模式下,企业内部服务少则几个到几十个,多则上百个,每个服务一般都以集群方式部署,这时自然产生两个问题(如下图所示): 图片发自简书App 一、服务发现:服务的消费方(Consumer)如何发现服务的提供方(Provider)? 二、负载均衡:服务的消费方如何以某种负载均衡策略访问集群中的服务提供方实例? 作为架构师,如果你理解了这两个问题,可以说就理解了微服务架构在技术上的最核心问题。 三种服务发现模式 服务发现和负载均衡并不是新问题,业界其实已经探索和总结出一些常用的模式,这些模式的核心其实是代理(Proxy,如下图所以),以及代理在架构中所处的位置,

系统架构之感想

天大地大妈咪最大 提交于 2020-05-05 19:51:32
时下软件界,架构界吹起了微服务之风,软件从传统的CS到BS,从单体到多服务器,再到现在的微服务;很多伙伴们也跟着技术潮流越来越多的在关注和学些或使用微服务解决项目中遇到的很多问题。本人也在软件行业20来年了,所谓活到老学到老,从软件开发,到软件设计,到软件架构,种种心路历历在目。不过现在我要说的并不是我自己的从业经历,而是我最近在架构方面的学习和领悟所感分享给大家。 架构定义: 软件架构是一个用于指导系统实现的草图,草图包括架构图和设计文档,草图越详细对系统实现的指导意义就越重要,且贯穿于软件的整个生命周期。 软件生命周期中架构设计的体现: 设计期:架构设计是重中之重。需求导向,架构先行。具体工作包括:系统拆分,技术选型,技术验证,接口规范,集成方式,技术规范,部署方案,运维方案等等。 实现期:确保各项技术规范和技术指标的执行落地,保障高质量的代码;指导研发任意和解决各类技术问题,提高研发团队效率;制定测试的技术性方案,包括自动化、性能、安全等方面;配合准备部署环境,运维实施方案落地。 运行期:发布上线相关基础工作,包括是否使用持续集成,自动化发布等技术;运维基础性工作,自动化运维、监控等相关技术。 架构的目标和方法: 目标:可控性与拆分;复用性与抽象;非功能性需求九维目标:高性能,可靠性,稳定性,可用性,安全性,灵活性,易用性,可扩展性,可维护性。 方法:4+1视图模型

dubbo源码—service invoke

我们两清 提交于 2020-05-03 21:42:01
dubbo的远程调用过程是怎么样的? dubbo远程过程调用经过了那些处理? 发起远程调用的时候究竟传了什么数据给provider? 要解决这些问题,欢迎一起探讨走进dubbo源码栏目。 在service reference中说了consumer端发起调用的时候使用的是远程服务的本地代理,发起调用的堆栈是 (上面调用堆栈中的filter链先不介绍了,留在后面service reply中介绍,因为consumer和provider的filter链构造过程是类似的) 前面说过consumer在引用服务的时候最终会生成一个proxy,该proxy是实现了对应的服务接口(比如:com.test.service.TestDubboService),而且包含一个InvokerInvocationHandler属性,在proxy的服务接口方法中调用InvokerInvocationHandler.invoke public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { String methodName = method.getName(); Class<?>[] parameterTypes = method.getParameterTypes(); // 判断是否是Object的方法

SpringCloud系列之集成Dubbo应用篇

只谈情不闲聊 提交于 2020-05-03 16:43:29
目录 前言 项目版本 项目说明 集成Dubbo 2.6.x 新项目模块 老项目模块 集成Dubbo 2.7.x 新项目模块 老项目模块 参考资料 系列文章 前言 SpringCloud系列开篇文章就说到了,公司新项目将入坑SpringCloud全家桶,但原先线上老项目是采用Spring+Dubbo技术栈的,新项目中的部分业务还是和老项目有点关联的,重写这一部分业务逻辑也是需要点时间,本来想通过http请求进行业务交互的,总感觉不够优雅,原先也了解过SpringCloud Alibaba,趁着这个机会捣腾捣腾。 项目版本 spring-boot-version: 2.2.5.RELEASE spring-cloud.version: Hoxton.SR3 dubbo版本会分成2.6.x系列和2.7.x系列二个版本进行说明 dubbo2.6.x <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.1.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId>

Spring Boot 项目实战(六)集成 Apollo

試著忘記壹切 提交于 2020-05-02 20:26:19
一、前言 上篇介绍了 Spring Boot 集成 Dubbo,使我们的系统打下了分布式的基础。随着程序功能的日益复杂,程序的配置日益增多:各种功能开关、参数配置、服务器地址等;对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制等;在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。分布式配置中心应运而生。本篇将主要介绍分布式配置中心 Apollo 的集成过程。 二、部署 Apollo ① 部署教程见官方文档: https://github.com/ctripcorp/apollo/wiki/分布式部署指南 ② 架构剖析: https://mp.weixin.qq.com/s/-hUaQPzfsl9Lm3IqQW3VDQ 三、使用 Apollo ① 登录 Apollo 管理控制台后创建项目,其中应用 ID 全局唯一。 ② 创建成功后跳转到项目维护界面,左侧上方为环境列表,中间区域为项目信息,下方可操作集群及 namespace 。右侧为默认 namespace : application ,具体配置项在此区域维护。 四、Spring Boot 集成 Apollo 4.1 引入 Apollo 依赖包 ① 首先在项目父 pom 文件中声明 Apollo 依赖。

dubbo面试题,会这些说明你真正看懂了dubbo源码

旧巷老猫 提交于 2020-05-02 18:21:17
整理了一些dubbo可能会被面试的面试题,感觉非常不错。如果你基本能回答说明你看懂了dubbo源码,对dubbo了解的足够全面。你可以尝试看能不能回答下。我们一起看下有哪些问题吧? 1、dubbo中"读接口"和"写接口"有什么区别? 2、谈谈dubbo中的负载均衡算法及特点? 3、最小活跃数算法中是如何统计这个活跃数的? 4、简单谈谈你对一致性哈希算法的认识? 5、服务发布过程中做了哪些事? 6、dubbo都有哪些协议,他们之间有什么特点,缺省值是什么? 7、什么是本地暴露和远程暴露,他们的区别? 8、服务提供者能实现失效踢出是根据什么原理? 9、讲讲dubbo服务暴露中本地暴露,并画图辅助说明? 10、一般选择什么注册中心,还有别的选择吗? 11、dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗?(面试高频题) 12、项目中有使用过多线程吗?有的话讲讲你在哪里用到了多线程?(面试高频题) 13、zookeeper的java客户端你使用过哪些? 14、服务提供者能实现失效踢出是什么原理?(高频题) 15、zookeeper的有哪些节点,他们有什么区别?讲一下应用场景。 16、画一画服务注册与发现的流程图。 17、在dubbo中,什么时候更新本地的zookeeper信息缓存文件?订阅zookeeper信息的整体过程是怎么样的? 18