Dubbo

架构演变之路:为何要搞微服务架构?

百般思念 提交于 2020-05-02 16:47:03
有不少朋友或同事都问过我这个问题:为什么我们要搞微服务架构,一个项目把代码从头撸到尾不是很方便吗,开发更快速,部署也容易。而且一提起微服务,涉及的技术就一大堆,好像几辈子也学不完。 怎么解答这个问题呢?我想还是通过架构的发展变迁史来说起,为什么会出现现在的各种架构。只有从整体上了解了架构的脉络,我们才好更加全方位的评估一个架构。为此,我们有理由来梳理一下架构发展的来龙去脉,究竟为何会出现微服务,主要解决什么问题。微服务架构是最先进的架构吗? 本文我们来探索一下架构的变迁。以及从Java工程师的角度来看技术的发展,了解我们在讨论微服务的时候,都会涉及哪些技术。微服务的下一步将如何发展。阅读完本文,你将了解到: 软件架构的发展史 SOA架构与MSA架构的区别 微服务架构核心关注的问题是什么 如何做微服务架构的技术选型 目前架构正在朝着什么方向发展 架构升级与业务发展的关系,一定要用最前卫的架构技术吗?什么样的架构才是好的架构 微服务的难点是什么,这里主要留给大家思考,会在后续文章中进一步讲解 首先我们还是回顾一下架构的整体发展史。 0、架构发展史 架构也是随着其缺陷不断演变而来的,下面是粗略的架构演变史: 70~80s:集中式(大型机) 上世纪70年代和80年代,大型机是计算机的工作方式。 问题所在 :最初的大型计算机使用打孔卡,并且大多数计算都在批处理过程中进行。没有在线处理

Dubbo 系列(07-5)集群容错

北城以北 提交于 2020-05-02 14:34:06
Dubbo 系列(07-5)集群容错 - Mock [toc] Spring Cloud Alibaba 系列目录 - Dubbo 篇 1. 背景介绍 相关文档推荐: Dubbo 实战 - 服务降级 Dubbo 实战 - 本地伪装 Dubbo 实战 - 本地存根 Dubbo 的集群容错中默认会组装 MockClusterWrapper,它实现了 Dubbo 的服务降级和本地伪装。 1.1 服务降级 服务降级配置方式,更多参考官网 Dubbo 实战 - 服务降级 <dubbo:reference interface="com.foo.BarService" mock="force:return+null"/> 或向注册中心写入动态配置覆盖规则: "override://0.0.0.0/com.foo.BarService?category=configurators&dynamic=false&application=foo&mock=force:return+null" mock=force:return+null 表示消费方对该服务的方法调用都直接返回 null 值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响。 mock=fail:return+null 表示消费方对该服务的方法调用在失败后,再返回 null 值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响。

dubbo源码解析五 --- 集群容错架构设计与原理分析

坚强是说给别人听的谎言 提交于 2020-05-02 14:33:44
欢迎来我的 Star Followers 后期后继续更新Dubbo别的文章 Dubbo 源码分析系列之一环境搭建 博客园 Dubbo 入门之二 ——- 项目结构解析 博客园 Dubbo 源码分析系列之三 —— 架构原理 博客园 Dubbo 源码解析四 —— 负载均衡LoadBalance 博客园 下面是个人博客地址,页面比博客园美观一些其他都是一样的 Dubbo 源码分析系列之一环境搭建" Dubbo 源码分析系列之一环境搭建 个人博客地址" Dubbo 入门之二 ——- 项目结构解析"Dubbo 项目结构解析 个人博客地址" Dubbo 源码分析系列之三 —— 架构原理" Dubbo 源码分析系列之三---架构原理 个人博客地址" Dubbo 源码解析四 —— 负载均衡LoadBalance" dubbo源码解析四 --- 负载均衡LoadBalance 个人博客地址" Dubbo 源码解析五 —— 集群容错" dubbo源码解析五 --- 集群容错架构设计与原理分析 个人博客地址" 目录 面试中集群容错的经常的问题 Dubbo 官方文档关于集群容错的介绍 Dubbo集群容错的架构分析 Dubbo集群容错源码解析 面试中集群容错的经常的问题 什么是集群容错 Dubbo的集群容错知道吗 Dubbo 集群容错是如何配置的 集群容错如何实现的 Dubbo 集群容错介绍下 介绍下

Dubbo源码学习总结系列三 dubbo-cluster集群模块

南楼画角 提交于 2020-05-02 13:11:30
Dubbo集群模块的目的是将集群Invokers构造一个透明的Invoker对象,其中包含了容错机制、负载均衡、目录服务(服务地址集合)、路由机制等,为RPC层提供高可用、高并发、自动发现、可治理的SOA特性。 本文我们主要讨论以下八个问题: 一、集群模块的需求功能点有哪些? 二、集群模块的总体设计框架是什么样的? 三、Dubbo提供了哪些容错机制?如何实现的? 四、Dubbo提供了哪些负载均衡机制?如何实现的? 五、Dubbo目录服务是干什么的?提供了哪几种类型的目录服务? 六、Dubbo提供了哪些路由机制?如何实现的? 七、总结集群模块如何带来高可用、自动发现、可治理的特性? 一、集群模块的需求功能点有哪些? 基于文章开头讨论的目标内容,我认为集群模块的需求功能点主要有以下几点: 1、将集群Invokers构造一个透明的Invoker对象提供给Rpc模块调用; 2、提供容错机制,包括Failover(失败自动切换,尝试其他服务器)、Failfast(失败立即返回并抛出异常)、Failsafe(失败忽略异常)、Failback(失败自动恢复,记录日志并定时重试)、Forking(并行调用多个服务,一个成功立即返回)、Broadcast(广播调用所有提供者,任意一个报错则报错); 3、提供负载均衡机制,包括Random(带权重的随机访问)、RoundRobin(带权重的轮训访问)

SpringCloudAlibaba微服务实战教程系列

自闭症网瘾萝莉.ら 提交于 2020-05-02 11:40:23
一、应用系列    Docker安装MySql完整教程、实操 使用到的mysql数据库的安装方案。    Docker安装Alibaba Nacos教程 docker安装单实例或集群的Nacos的注册中心方便快速开始。      实现Nacos服务注册与发现教程 通过简单的方式进行服务注册与调用     ******完善中 二、概念性的介绍      Nacos理论知识     ***** 三、官网系列      Spring官网微服务alibaba文档      SpringCloudAlibaba文档      阿里巴巴nacos官方文档      阿里巴巴Sentinal官方文档    阿里巴巴分布式事务Seata官网      阿里巴巴Dubbo使用nacos官方文档      阿里巴巴exception 四、Spring Cloud Alibaba简介 Spring Cloud Alibaba 致力于提供 微服务开发的一站式解决方案 。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。 目前 Spring

dubbo 多版本注册问题

被刻印的时光 ゝ 提交于 2020-05-01 18:05:37
发现2.7.5和2.7.6 如果一个接口有两个实现类,尽管version或者group不同,只能注册其中一个服务 解决方案: 使用配置文件: <dubbo:service ref="userService" interface ="cn.coreqi.service.UserService" version="1.0.0"/> <bean id="userService" class ="cn.coreqi.service.impl.UserServiceImpl"/> <dubbo:service ref="userService2" interface ="cn.coreqi.service.UserService" version="2.0.0"/> <bean id="userService2" class ="cn.coreqi.service.impl.UserServiceImpl2"/> 来源: oschina 链接: https://my.oschina.net/u/4353583/blog/4261106

Dubbo Admin 使用(最新)

坚强是说给别人听的谎言 提交于 2020-05-01 18:05:02
以上建立两个服务名(依据 的是版本的不同) 负载均衡 更多>负载均衡 建立好后 搜索服务名称 可以看见 权重调整 更多>权重调整 最后在权重详情页 可以看到调整后的信息 来源: oschina 链接: https://my.oschina.net/u/4274724/blog/4261108

阿里,华为,腾讯,小米2019秋招实习面试经历(Java岗位)

被刻印的时光 ゝ 提交于 2020-05-01 16:24:27
首先自我介绍,非985,非211学校,主要从事Java后台开发,大一至现在做过两个项目(都不深),有一段去小公司的实习经历,今年刚到学校开始准备实习,陆续投了小米(我是米粉),阿里,华为,腾讯,京东,网易,今日头条等一系列互联网公司,小米,腾讯,今日头条挂一面,网易笔试过了和华为冲突了,去华为面试了,只拿到了阿里的java后台offer,华为应该算是口头offer吧(不过据说城里套路深,有可能是面试官诈你),然后其他几家公司就不打算去面试了。 小米面试 小米是最早的,向来重视算法出名。 准时电话打过来,首先自我介绍,然后倒着输出链表元素(压入占输出),然后问如果要修改链表元素呢(也就是3个指针翻转链表了),然后让手写链表倒数第k个数(两个指针跑,一个先跑k步,后面一个再跑),写好后发邮件给他,老实说以前面试都是说一说算法就行,第一次这样写代码发过去,有点紧张,哆哆嗦嗦打开eclipse写完了发过去。 第二题:给定一个字符串如果某个字符是? 后面可以表示任意多个字符,如果是.说明可以表示一个字符,现在给定两个序列,问第二个能否符合第一个序列,卡住了,想了个递归发过去了。 第三题:设计红包算法。这个想想不是简单么,每一个红包随机啊,最后一个总数减就是了,后来面试官提醒必须至少保证每一个红包为0.01,然后改成先每一个都放0.01,再随机,估计有更好的方法。 你还有什么想说的:

搭建分布式系统(idea+springboot+dubbo)

霸气de小男生 提交于 2020-05-01 06:12:01
###前提 当然,搭建分布式系统之前,你要搞清楚dubbo和Zookeeper的关系,先安装启动Zookeeper ###搭建工程,新建maven工程,什么都不需要勾选 或者创建空工程 ###创建公共接口spring-dubbo-api(即公共调用模块) file->new->module 选择maven或springboot都可以,我创建的是springboot, 定义接口方法(随便定义了一个) ###创建服务提供者spring-dubbo-provider 创建springboot 选择web工程,这个不在截图了 添加pom依赖 添加公共api模块 <dependency> <groupId>com.wonder</groupId> <artifactId>spring-dubbo-api</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> 引入dubbo依赖和Zookeeper以及Zookeeper客户端 <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.3</version> <exclusions> <exclusion>

阿里流控中间件sentinel的思考,客观的对比下sentinel和hytrix

寵の児 提交于 2020-04-30 19:32:03
简单说下, sentinel的优势: 友好的控制面板,支持实时监控 多种限流。支持QPS限流,线程数限流,多种限流策略,如:直接拒绝,匀速模式(漏斗),冷启动(如设置限制1000,延迟10秒,那第一秒pass100, 第二秒200,递增,适应于缓存保护) 多种降级模式,支持按平均返回时间降级,按多种异常数降级,按异常比率降级 方便扩展开发,支持SPI模式对chain进行扩展 支持链路的关联,按链路统计限流,系统保护,热门资源保护等等 如果远见点,看到阿里后面也开始弄全家桶了 https://github.com/spring-cloud-incubator/spring-cloud-alibaba 也是可以持续集成的 当然最终的是hytrix也已经停止维护了。 hytrix的优势 hytrix支持异步调用,支持线程池级别的隔离 这种方式就是通过rxJava进行调用,等待完成后进行异步通知调用,但在http这种请求中,主线程还是阻塞在等待中。带来的收益,无非就是hytrix能对超时进行控制。 但坏处也很明显,如果是每个接口创建一个线程池的话,如果接口过多,机器中会创建大量线程,而在java中,线程是属于轻量级的进程,对应是内核线程,进而造成线程的切换。成本还是挺高。 再者每个线程也得需要-Xxs的大小,如果线程数目过多也是一笔不小的花销。 hytrix支持百分比