Dubbo

Java互联网高级架构师高级进阶实战

非 Y 不嫁゛ 提交于 2020-02-28 05:53:01
01、开学典礼_为什么要从设计模式开始及工厂模式详解 02、单例模式详解 03、代理模式 04、委派模式和策略模式 05、模板模式和适配器模式 06、装饰者模式和观察者模式 07、各设计模式总结与对比 08、Spring框架的前世今生已经源码构建 09、用300行代码手写提炼Spring的核心原理 10、用300行代码手写提炼Spring的核心原理补充 11、一步一步手绘Spring运行时序图(1) 12、19一步一步手绘spring DI运行时序图 13、一步一步手绘spring AOP时序图 14、一步一步手绘springMVC运行时序图 15、用30个类高仿真提炼纯手写Spring框架V2.0(1) 16、用30个类高仿真提炼纯手写Spring框架V2.0(2) 17、用30个类高仿真提炼纯手写Spring框架V2.0之MVC 18、用30个类高仿真提炼纯手写Spring框架V2.0之AOP 19、Spring事务传播原理及数据库事务操作原理 20、基于SpringJDBC手写定制自己的ORM框架 21、Spring5新特性简述及经典的高频面试题分析 22、Mybatis应用分析与最佳实践 23、Mybatis体系结构与工作原理 24、Mybatis插件原理及Spring集成 25、手写自己的Mybatis框架 26、初步认识多线程的发展及使用 27、多线程的原理分析(1)

2020面试季即将来袭,你做好准备了吗?

梦想的初衷 提交于 2020-02-28 04:18:35
前言: 本文收集整理了各大厂常见面试题N道,你想要的这里都有内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈,希望大家都能找到适合自己的公司,开开心心的撸代码。 适宜阅读人群: 需要面试的初/中/高级 Java 程序员 想要查漏补缺的人 想要不断完善和扩充自己 Java 技术栈的人 Java 面试官 话不多说直接放题; Java 基础面试题 1. JDK 和 JRE 有什么区别? 2. == 和 equals 的区别是什么? 3. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? 4. final 在 Java 中有什么作用? 5. Java 中的 Math.round(-1.5) 等于多少? 6. String 属于基础的数据类型吗? 7. Java 中操作字符串都有哪些类?它们之间有什么区别? 8. String str="i"与 String str=new String(“i”)一样吗? 9. 如何将字符串反转? 10. String 类的常用方法都有那些? 11. 抽象类必须要有抽象方法吗? 12. 普通类和抽象类有哪些区别? 13.

什么是Dubbo

天大地大妈咪最大 提交于 2020-02-28 00:45:19
dubbo是一个高性能,轻量级的RPC框架,是要提供三个核心功能:远程过程调用,智能容错与负载均衡,以及自动注册与发现。 简单来说就是一个RPC框架,面向SOA服务治理。 来源: oschina 链接: https://my.oschina.net/u/4434424/blog/3164212

dubbo负载均衡和集群容错

橙三吉。 提交于 2020-02-27 21:03:00
一、简述 在一个分布式系统中,为了做到系统的高可用,即服务宕机时不影响对外正常提供服务,需要组建负载集群,当集群中某一节点没有及时返回数据时,需要有 集群容错(重试)机制 。 在分布式系统中有多台的服务器作为提供者负责处理各种网络请求,当同时有多个请求同时过来时,需要将其均摊在各台服务器上,避免了某台服务器压力过大而某台服务器则闲置的问题,这就需要 负载均衡机制 。 二、集群容错机制 各节点关系: 这里的Invoker是Provider的一个可调用Service的抽象,Invoker封装了Provider地址及Service接口信息。 Directory代表多个Invoker,可以把它看成List<Invoker>,但与List不同的是,它的值可能是动态变化的,比如注册中心推送变更。 Cluster将Directory中的多个Invoker伪装成一个Invoker,对上层透明,伪装过程包含了容错逻辑,调用失败后,重试另一个。 Router负责从多个Invoker中按路由规则选出子集,比如读写分离,应用隔离等。 LoadBalance负责从多个Invoker中选出具体的一个用于本次调用,选的过程包含了负载均衡算法,调用失败后,需要重选。 六种机制 Failover Cluster 失败自动切换,当出现失败,重试其它服务器。(缺省) 通常用于读操作,但重试会带来更长延迟。

疫情结束后的BATJ,面试会越来越难吗?

可紊 提交于 2020-02-27 18:47:21
疫情信息仍在不断刷屏,相信今天大家都在线上远程办公。 开工日期一再延迟,之前跳槽、转行、涨薪的计划都不得不暂时搁置起来。但Java 作为稳居开发榜首的语言,企业需求依旧旺盛,其实很多企业,比如腾讯、字节跳动,为了保证春招的顺利进行,尽可能提高招聘效率,做出了一些调整:首先是更多采用线上面试的形式,有的甚至直接在线发offer。其次,简历筛选环节更加严格,以尽快找到最匹配的候选人。 只要认真准备,疫情一旦结束,势必迎来一波招聘高潮。那么,对于技术人,尤其是 Java人来说,到底需要怎么应对呢?这里列出几个大厂流行的面试考核技术: 亿级流量架构、千亿级微服务架构设计、Dubbo服务降级、海量数据库集群搭建、秒杀系统设计等等。 这些技术相信大家都不陌生,都是近年来进大厂所必需的硬技能,但要说真正搞明白的恐怕不多。 之前已经发过一些技术文章,需要的朋友可以关注我翻看下。不过想要系统全面的提升这些硬技能,还是需要一个系统性的学习路线规划以及相应的学习资料。 基础知识 主要包括 Java基本程序结构 类与对象 接口与抽象类 泛型 集合 异常 多线程 Java基础知识的内容比较多,如果之前没有接触过Java的,需要耗费比较多的时间来进行学习。但这是很有必要的,只有基础牢固了,后面的学习才会轻松。 学习资料方面,有很多经典的Java书籍可以选择。如:Java编程思想等。这里我主要使用了

微服务治理解密:EDAS 是什么?

我只是一个虾纸丫 提交于 2020-02-27 17:12:09
本文是《微服务治理解密》系列篇的第一篇文章,为大家介绍 EDAS 是什么。该系列文章基于阿里云商业化产品 EDAS 『产品官网 >>』 的微服务实践,如果你的团队具备较强的微服务治理能力,那么希望我们在微服务治理方面的实践和背后的思考,可以为你提供一些参考。 EDAS 是什么 有很多读者问我在阿里是做什么的,我一般会回答:“我在阿里主要负责 Dubbo、HSF、SpringCloud Alibaba 这几个微服务框架研发和商业化相关的工作”,这样回答,如果对方是 Java 开发,一般都能知道个大概。熟悉阿里云的朋友会了解到阿里云上有很多的 PaaS 产品,我主要就是负责开发 “企业级分布式应用服务 EDAS” 这款产品;不熟悉阿里云的朋友,会对阿里云上一堆产品、一堆名词感到奇怪,什么 EDAS、MSE、ACM、OAM… 我开始接触 EDAS 时,也是吐槽了一下这次名词,但随着逐渐了解,也就觉得这些云产品像 Redis、DB、MQ 这些东西一样亲切了。这篇文章将围绕 EDAS 这款阿里云云产品进行介绍。 企业级分布式应用服务 EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持 Spring Cloud、Apache Dubbo(以下简称

素小暖讲微服务

独自空忆成欢 提交于 2020-02-27 16:14:58
欲速则不达,欲达则欲速! 一、前言 微服务架构被提出很短的时间内,就被越来越多的开发人员推崇,简单来说其主要的目的是有效的拆分应用,实现敏捷开发和部署。本博客尝试介绍微服务架构的一些实施细节和要求,探询微服务架构的由来,并最终提供我们团队内部的有一些实践总结,希望对大家有帮助。 二、什么是微服务 传统的web开发方式,通过对比比较容易理解什么是Microservice Architecture。和Microservice相对应的,这种方式一般被称为Monolithic(比较难传神的翻译)。所有的功能打包在一个 WAR包里,基本没有外部依赖(除了容器),部署在一个JEE容器(Tomcat,JBoss,WebLogic)里,包含了 DO/DAO,Service,UI等所有逻辑。 用《The art of scalability》一书里提到的scale cube比较容易理解如何拆分。 我们叫分库分表,为人总结成了scale cube,这就是抽象的能力,把复杂的东西用最简单的概念解释和总结。X轴代表运行多个负载均衡器之后运行的实例,Y轴代表应用进一步分解为微服务(分库),数据量大时,还可以用Z轴将服务按数据分区分表。 Monolithic比较适合小项目,优点是: 开发简单直接,集中式管理 基本不会重复开发 功能都在本地,没有分布式的管理开销和调用开销 它的缺点也非常明显

NewBanker wbs架构图

纵然是瞬间 提交于 2020-02-27 14:55:09
架构设计的目的 架构设计的主要目的:是为了解决软件系统复杂度带来的问题 。 个人感悟是:架构即(重要)决策,是在一个“ 有约束的盒子 ”里去求解或接近最优解。这个“ 有约束的盒子 ”是团队经验、成本、资源、进度、业务所处阶段等所编织、掺杂在一起的综合体(人,财,物,时间,事情等)。架构无优劣,但是存在恰当的架构用在合适的软件系统中,而这些就是决策的结果。 软件系统复杂度 软件领域的复杂性 体现在两个方面: 1. 结构的复杂性 结构复杂的系统几乎毫无例外具备两个特点: 组成复杂系统的组件数量更多; 同时这些组件之间的关系也更加复杂。 2. 逻辑的复杂性 意识到结构的复杂性后,我们的第一反应可能就是“降低组件数量”,毕竟组件数量越少,系统结构越简。最简单的结构当然就是整个系统只有一个组件,即系统本身,所有的功能和逻辑都在这一个组件中实现。 不幸的是,这样做是行不通的,原因在于除了结构的复杂性,还有逻辑的复杂性,即如果某个组件的逻辑太复杂,一样会带来各种问题。 逻辑复杂的组件,一个典型特征就是单个组件承担了太多的功能。 架构设计三原则 1 合适原则: 合适优于业界领先 架构无优劣,但存合适性。“汝之蜜糖,吾之砒霜”;架构一定要匹配企业所在的业务阶段;不要面向简历去设计架构,高大上的架构不等于适用;削足适履与打肿充胖都不符合合适原则;所谓合适,一定要匹配业务所处阶段

初识Dubbo

感情迁移 提交于 2020-02-27 14:06:17
一、dubbo是什么 dubbo是一个分布式服务框架,提供高性能和透明化对rpc远程服务调用方案,以及SOA服务治理方案。 核心部分包括: 1、远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 2、集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 3、自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 二、dubbo能做什么 1、透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 2、软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 3、服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。 三、dubbo调用原理图 节点角色说明: Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。 Monitor: 统计服务的调用次调和调用时间的监控中心。 Container : 服务运行容器。 调用关系说明: 0. 服务容器负责启动,加载,运行服务提供者。 1.

为什么要学习源码?学习源码对我们有用吗?

好久不见. 提交于 2020-02-27 13:17:31
为什么要学习源码? 1 前言 由于现在微服务很流行,越来越多企业采用了SpringCloud微服务架构,而SpringBoot则是快速构建微服务项目的利器。于是笔者以此为切入点,将SpringBoot作为我们源码分析的第一个开源项目,之后还会对更多开源项目进行源码分析。要进行源码分析,笔者结合自身经历来跟大家聊聊我们为什么要学习源码这个话题,大家一起探讨学习。 我们程序员在开发代码时每天都在使用别人写好的框架,无论你是在使用Spring生态的Spring核心,SpringMVC,SpringBoot和SpringCloud等框架,还是在使用阿里系的Dubbo,RocketMQ,Seata,Druid等中间件框架,亦或你是搞大数据的,在使用Apache组织的Zookeeper,Hadoop,Hive,Spark等大数据组件框架,这些开源框架都给我们的项目编码带来了极大的方便,促进了我们的开发效率。是的,这些都是开源大神们帮我们造好的轮子,我们直接使用即可,而且用起来很少出bug,因为这些框架一般都是经过考验的才能流行起来。 可能大部分人会认为,这些轮子都已经造好了,我们直接用即可。是的,这些开源框架对我们使用来说是透明的,它们就像一个个黑盒子。至于这些黑盒里面装的是什么东西,里面是怎样构造的,如果没有去探究这些黑盒的话,我们无从得知。但是,我们做开发的天天跟这些黑盒打交道