Dubbo

面经整理——(百度美团鹅厂网易等)

岁酱吖の 提交于 2019-12-22 01:52:22
百度 一面 算法题: 手写快排、单例模式、死锁 1 介绍下RPC 2 看过Dubbo源码是吧? 说下dubbo怎么区分不同的服务? 怎么服务降级? 负载均衡的方法?具体到每种的原理。源码级别 服务端没注册客户端运行会出现什么结果? 3 介绍下CQRS 4 问基础 HashMap是怎么扩容的?为什么是二的次幂?具体到元素是怎么计算index的? 5 JVM内存模型? 程序计数器到底存了什么东西,举例。常量池 到底存在哪了? 6 ThreadLocal ThreadLocalMap中的Key到底存了啥 7 AOP原理的? @before 如果抛出了异常代码还会执行嘛 8 Cookie和Session的区别 二面 1 浏览器输入baidu.com 经历了啥 2 CDN和DNS执行顺序 3 HTTPS和HTTP有什么区别 HTTPS执行流程图 4 页面加速加载 用了哪些技术 网易 一面: 1)介绍项目 项目里面最大的困难 项目细节,如何保证数据一致性和可靠性的 你是怎么快速熟悉业务做需求的? 2)基础 说说对高并发的理解 对多线程的理解 给你个场景?火车站卖票问题,如何解决超卖?加锁 AutomaticInteger ,具体的原理? CAS中存在的ABA问题怎么解决的?加版本控制 3)数据库 场景假设:1000W数据,需要在前端显示,怎么写sql或注意哪些内容 二面: 1)介绍项目 2

docker-compose 微服务启动顺序脚本监听 dubbo

不想你离开。 提交于 2019-12-22 00:39:05
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 原理说明: command 里面的find.sh 监听微服务启动的log,如果log字段包含多出来的成功字符串 JVM running for 说明已经启动成功,可以继续启动依赖的服务,保证启动不报错,TODO的地方是 超时应发邮件提醒 1.yml文件 xxx-service: image: java container_name: xxx-service restart: always volumes: - /etc/timezone:/etc/timezone - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime command: ["/usr/src/wait.sh", "18","nohup java -jar -Xms128m -Xmx256m -XX:PermSize=64M -XX:MaxPermSize=128M /usr/src/myapp/xxx-service.jar > /usr/src/myapp/xxx-service.log &"] links: - zzz-service yyy-service: image: java container_name: yyy-service restart: always volumes: -

从头开始搭建一个dubbo+zookeeper平台

这一生的挚爱 提交于 2019-12-21 09:36:55
本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用。 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后的常规方案演进历程。 其次,当服务越来越多之后,我们需要做哪些服务治理? 最后,是dubbo的架构图 注册中心的选择 dubbo支持多种类型的注册中心: Multicast注册中心 Zookeeper注册中心 Redis注册中心 Simple注册中心 这里我们选择zookeeper,其实类型的优点缺点可详细查看文档。 1:zookeeper的安装,还是采用docker这一招鲜的run命令来安装zookeeper docker run -dit --name zookeeper --hostname zookeeper-host -v /data:/data -p 2181:2181 jplock/zookeeper:latest 2:安装zkui,可以参考 zkui的项目地址 来安装,它提供了一个管理界面,可以针对zookeepr的节点值进行CRUD操作,同时也提供了安全认证,按照如下几步就可以完成安装。 mvn clean install,执行前需要安装java环境,maven环境,执行成功后会生成一个jar文件。 将config.cfg复制到上一步生成的jar文件所在目录

Dubbo基本使用

ぃ、小莉子 提交于 2019-12-21 08:46:03
文章目录 一、RPC简介 1. 分布式 2. RPC 二、dubbo框架 1. 基本架构 2. 架构组件 3. 调用过程 4. dubbo 支持的协议 三、直连方式的简单实现 1. 分包、粒度、版本 2. 公共资源项目 3. 用户信息服务模块 (1)加入依赖和编译插件 (2)创建公共模块中接口的实现类 (3)配置文件(服务提供者) (4)配置Tomcat(web.xml) 4、创建订单系统 (1)Dubbo配置文件 (2)Tomcat(web.xml) 5. 创建服务消费者 (1)配置文件(服务消费者) (2)其它步骤 四、注册中心 1. 注册中心工作方式 2. 配置zookeeper 3. 启动zookeeper服务 五、将三中的项目改为使用注册中心 1. 新增依赖 2. 更改dubbo配置文件 (1)服务提供者 (2)服务消费者 3. dubbo的高可用 六、监控中心 1. 下载 2. 配置监控中心 3. 运行管理后台 dubbo-admin 4. 运行 dubbo-admin 应用 七、遇到的异常 1. 循环依赖 2. java.lang.IllegalStateException 一、RPC简介 1. 分布式 分布式系统就是若干独立计算机(服务器) 的集合 传统单一应用架构的缺点: 性能扩展比较困难 不利于多人同时开发 不利于升级维护 整个系统的空间占用比较大 2. RPC

dubbo的.xml配置文件报错:Multiple annotations found at this line: - cvc-complex-type.2.4.c

纵饮孤独 提交于 2019-12-21 04:27:30
dubbo的.xml配置文件报错:Multiple annotations found at this line: - cvc-complex-type.2.4.c 1.首先报错信息如下: “Multiple annotations found at this line: - cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'dubbo:application'. - schema_reference.4: Failed to read schema document 'http:// code.alibabatech.com/schema/dubbo/dubbo.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.” 2.下载dubbo.xsd文件,自己定义保存路径 看了一下网上好多下载都需要积分,我也是笑了,下面分享一个免费的: 点击下载dubbo 3.配置dubbo 点击 然后add出来: 点FIle

Java

非 Y 不嫁゛ 提交于 2019-12-21 04:13:06
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。学习java就要有方法。好的方法事半功倍。 java学习路线以及学习知识! 一.首先要了解java的四个相关技术:java程序设计语言、java class文件格式、java应用编程接口、java虚拟机。理解它们之间的区别与联系,分别有哪些应用。 Java编程语言,即语法。 Java文件格式,即各种文件夹、文件的后缀。 Java虚拟机(JVM),即处理*.class文件的解释器。 Java应用程序接口(Java API)。 二.java是分两部分的:一个是编译,一个是运行。 javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。 java:负责运行的部分.会启动jvm

微服务相关原理与治理

限于喜欢 提交于 2019-12-21 02:38:33
微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如 Dubbo 和 Spring Cloud。 目前微服务实现方式主要有两种Dubbo和SpringCloud: 一、 Dubbo :(https://www.cnblogs.com/liangblog/p/6165070.html) Dubbo是一个分布式服务框架,致力于提供高性能透明化RPC远程调用方案,提供SOA服务治理解决方案。 Dubbo使用 RPC 通讯协议。 架构原理 :(http://dubbo.apache.org/zh-cn/docs/user/preface/architecture.html) 服务容器负责启动,加载,运行服务提供者。 服务提供者在启动时,向注册中心注册自己提供的服务。 服务消费者在启动时,向注册中心订阅自己所需的服务。 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。 zookeeper注册中心: 注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外

JAVA服务性能排查完整方案(含Jmeter,Dubbo)

我的未来我决定 提交于 2019-12-20 19:18:26
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前段时间,博主在做线上服务性能问题排查的工作;想到也有网上的小伙伴们跟博主需求相同,故此贴出方案;以备后用! 一、jmeter远程调用dubbo接口 (1).jmeter安装jmeter-plugins-for-apache-dubbo 参考地址:https://github.com/thubbo/jmeter-plugins-for-apache-dubbo/wiki/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97 插件包可以去github上下载jmeter-plugins-dubbo-${version}-jar-with-dependencies.jar。插件安装目录:${JMETER_HOME}\lib\ext. 下载地址:https://github.com/thubbo/jmeter-plugins-for-apache-dubbo/releases (2).将dubbo接口使用maven dubbo成jar,放入目录${JMETER_HOME}\lib\ext (3).jmeter中创建dubbo接口调用实例,步骤 a.File->New (新建一个测试计划) b.选中上一步新建的测试计划点击鼠标右键,Add->Threads(Users)->Thread Group

SpringBoot+idea搭建微服务简化流程

断了今生、忘了曾经 提交于 2019-12-20 11:31:09
作者: 程序猿的月光宝盒 1.新建普通maven工程 2.在父级pom中按需修改 3.删除父级 src 目录 4.创建公共模块common,里面只有service接口和实体类 5.构建微服务模块,provider 6.引用Zookeeper和Dubbo的依赖 在这个provider中修改pom文件坐标 <dependencies> <!--引入公共模块项目--> <dependency> <groupId>cn.kgc</groupId> <artifactId>common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!--这是微服dubbo的核心服务包--> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> <exclusions> <exclusion> <artifactId>spring</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <!--这是zookeeper的服务操作包

Dubbo 如何成为连接异构微服务体系的最佳服务开发框架

半腔热情 提交于 2019-12-20 10:51:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 从编程开发的角度来说,Apache Dubbo (以下简称 Dubbo )首先是一款 RPC 服务框架,它最大的优势在于提供了面向接口代理的服务编程模型,对开发者屏蔽了底层的远程通信细节。同时 Dubbo 也是一款服务治理框架,它为分布式部署的微服务提供了服务发现、流量调度等服务治理解决方案。 在这篇文章中,我们将以以上基础能力为背景,尝试突破 Dubbo 体系自身,探索如何利用 Dubbo 对多协议、多服务发现模型的支持,来实现异构微服务体系间的互联互通。在实际业务场景中,这可以用来解决异构技术体系共存场景下的通信问题,帮助公司实现在异构技术体系间作平滑迁移,解决大规模跨区域、多集群部署场景的地址发现及流量调度等问题。 面向接口代理的透明服务开发框架 我们还是从 Dubbo 是一个微服务开发框架 这个大家熟知的概念开始。就像 Spring 是开发 Java 应用的基础框架一样,我们经常会选用 Dubbo 作为开发微服务业的基础框架。 Dubbo 框架的最大优势我认为就在其面向接口的编程模型,使得开发远程服务调用就像开发本地服务一样(以 Java 语言为例): 服务定义 public interface GreetingsService { String sayHi(String name); }