Dubbo

Spring Cloud|03 Spring Cloud与Dubbo

时光总嘲笑我的痴心妄想 提交于 2020-11-23 08:52:51
几点说明 1、本系列Spring Cloud的博客参考了方志朋所著《深入理解Spring Cloud与微服务构建》; 2、大家如果想更加深入的理解Spring Cloud 建议多实战、多看书; Dubbo简介 介绍 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。 Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力: 面向接口的远程方法调用:封装了长连接的NIO框架,例如:Netty、Mina等等; 智能容错和负载均衡; 服务自动注册和发现; 集成Apache的Zookeeper组件,用于用户的注册与发现; Dubbo框架的运行流程如下: 服务提供者注册进入服务注册中心; 服务消费者订阅服务; 服务消费者发现服务; 服务消费者通过远程调度来找到服务提供者进行服务的消费; 服务消费者和服务提供者定时发送心跳数据到服务监控中心用于记录调用次数和时间; Dubbo的优点: 连通性: 服务注册中心、服务提供者、服务消费者、服务监控中心都是长连接; 健壮性: 监控中心宕机不会影响其他的服务的正常进行,服务器集群配置的话,任意一个服务的宕机都不会影响整体的服务的运行状况; 伸缩性: 可以动态增减注册中心与服务的实例数量; 升级性: 服务器集群升级,不会对现有架构造成压力

CVE-2020-1948: Apache Dubbo 远程代码执行漏洞通告

∥☆過路亽.° 提交于 2020-11-23 08:37:36
0x00 漏洞背景 2020年06月23日, 360CERT监测发现 Apache Dubbo 官方 发布了 Apache Dubbo 远程代码执行 的风险通告,该漏洞编号为 CVE-2020-1948 ,漏洞等级: 高危 。 Apache Dubbo 是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 Apache Dubbo Provider 存在 反序列化漏洞 ,攻击者可以通过 RPC 请求发送无法识别的服务名称或方法名称以及一些恶意参数有效载荷,当恶意参数被反序列化时,可以造成远程代码执行。 该漏洞的相关技术细节已公开。 对此,360CERT建议广大用户及时安装最新补丁,做好资产自查以及预防工作,以免遭受黑客攻击。 0x01 风险等级 360CERT对该漏洞的评定结果如下 评定方式 等级 威胁等级 高危 影响面 广泛 0x02 漏洞详情 Apache Dubbo Provider 存在 反序列化漏洞 ,攻击者可以通过 RPC 请求发送无法识别的服务名称或方法名称以及一些恶意参数有效载荷,当恶意参数被反序列化时,可以造成远程代码执行。 0x03 影响版本 Dubbo 2.7.0 - 2.7.6 Dubbo 2.6.0 - 2.6.7 Dubbo 2.5.x (官方不再维护) 0x04

SpringBoot-SpringCloud

浪子不回头ぞ 提交于 2020-11-23 07:11:45
----------------------------------------------------------------------------- spring boot 1.我理解就是把 spring spring mvc spring data jpa 等等的一些常用的常用的基础框架组合起来, 提供默认的配置,然后提供可插拔的设计,就是各种 starter ,来方便开发者使用这一系列的技术。 2.以前需要关注版本兼容和一堆配置整合文件, 现在可以先不关心如何配置,可以快速的启动开发,进行业务逻辑编写, 各种需要的技术,加入 starter 就配置好了,直接使用,可以说追求开箱即用的效果吧。 3.对使用者来说,换用Spring Boot以后,项目初始化方法变了,配置文件变了, 另外就是不需要单独安装Tomcat这类容器服务器了,maven打出jar包直接跑起来就是个网站,但你最核心的业务逻辑实现与业务流程实现没有任何变化。 4.4.0版本是Spring框架最新发布的主版本,并且首次完全支持Java8的功能。你依然可以使用较早的Java版本,但是现在所需的最小的版本已经被提升的Java SE6。 同时还利用主版本发布的机会删除了很多废弃的类和方法。 5.Spring 是一个“引擎”; Spring MVC 是基于Spring的一个 MVC 框架; Spring Boot

【Dubbo源码阅读系列】之 Dubbo SPI 机制

北城以北 提交于 2020-11-23 05:45:56
最近抽空开始了 Dubbo 源码的阅读之旅,希望可以通过写文章的方式记录和分享自己对 Dubbo 的理解。如果在本文出现一些纰漏或者错误之处,也希望大家不吝指出。 Dubbo SPI 介绍 Java SPI 在阅读本文之前可能需要你对 Java SPI(Service Provider Interface) 机制有过简单的了解。这里简单介绍下:在面向对象的设计中,我们提倡模块之间基于接口编程。不同模块可能会有不同的具体实现,但是为了避免模块的之间的耦合过大,我们需要一种有效的服务(服务实现)发现机制来选择具体模块。SPI 就是这样一种基于接口编程+策略模式+配置文件,同时可供使用者根据自己的实际需要启用/替换模块具体实现的方案。 Dubbo SPI 的改进点 以下内容摘录自 https://dubbo.gitbooks.io/dubbo-dev-book/SPI.html Dubbo 的 扩展点 加载从 JDK 标准的 SPI (Service Provider Interface) 扩展点发现机制加强而来。 JDK 标准的 SPI 会一次性实例化扩展点所有实现,如果有扩展实现初始化很耗时,但如果没用上也加载,会很浪费资源。 如果扩展点加载失败,连扩展点的名称都拿不到了。比如:JDK 标准的 ScriptEngine,通过 getName() 获取脚本类型的名称,但如果

Dubbo(二):深入理解Dubbo源码之Dubbo的服务发现SPI机制

♀尐吖头ヾ 提交于 2020-11-23 05:36:24
一、前言   用到微服务就不得不来谈谈服务发现的话题。通俗的来说,就是在提供服务方把服务注册到注册中心,并且告诉服务消费方现在已经存在了这个服务。那么里面的细节到底是怎么通过代码实现的呢,现在我们来看看Dubbo中的SPI机制 二、SPI简介   SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件 ,加载实现类,这样 运行时可以动态的为接口替换实现类 三、Dubbo中的SPI   Dubbo与上面的普通的Java方式实现SPI不同,在Dubbo中重新实现了一套功能更强的SPI机制,即通过键值对的方式进行配置及缓存。其中也使用ConcurrentHashMap与synchronize防止并发问题出现。主要逻辑封装在ExtensionLoader中。下面我们看看源码。 四、ExtensionLoader源码解析   由于内部的方法实在太多,我们只挑选与实现SPI的重要逻辑部分拿出来讲解。     1、getExtensionLoader(Class<T> type) 1 public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type) { 2 if (type == null ) { 3

微服务化的基石——持续集成

别来无恙 提交于 2020-11-22 03:36:26
本文由 网易云 发布。 作者:刘超,网易云解决方案架构师 一、持续集成对于微服务的意义:拆之前要先解决合的问题 在很多微服务化的文章中,很少会把持续集成放在第一篇,因为大多数的文章都会将如何拆的问题,例如拆的粒度,拆的时机,拆的方式。 为什么需要拆呢?因为这是人类处理问题的本质方式:将一个大的复杂问题,变成很多个小问题解决。 所以当一个系统复杂到一定程度,当维护一个系统的人数多到一定程度,解决问题的难度和沟通成本大大提高,因而需要拆成很多个工程,拆成很多个团队,分而治之。 然而当每个子团队将子问题解决了,整个系统的问题就解决了么?你可以想象你将一辆整车拆成零件,然后再组装起来的过程,你就可以想象拆虽然不容易,合则更难,需要各种标准,各种流水线,才能将零件组装称为车。 我们先来回顾一下拆的过程。 最初的应用大多数是一个单体应用: 单体应用 一个Java后端,后面跟一个数据库,基本上就搞定了。 随着系统复杂度的增加,首先Java程序需要做的是纵向的拆分。 纵向拆分 首先最外面是一个负载均衡,接着是接入的Nginx,做不同服务的路由。 不同的服务拆成独立的进程,独立部署,每个服务使用自己的数据库和缓存,解决数据库和缓存的单点瓶颈。 数据库使用一主多从的模式,进行读写分离,主要针对读多写少的场景。 为了承载更多的请求,设置缓存层,将数据缓存到Memcached或者Redis中,增加命中率。

浅谈微服务架构、容器技术与K8S

时光毁灭记忆、已成空白 提交于 2020-11-22 03:33:50
关注嘉为科技,获取运维新知 企业应用系统:从单体应用走向微服务架构;从裸金属走向容器。 如果在诸多热门云计算技术诸如容器、微服务、DevOps、OpenStack等之中,找出一个最火的方向,那么可能非微服务莫属。尽管话题炙手可热,但对传统行业来说,微服务落地和方法论目前处于起步阶段。 单体架构 对于传统企业来说,数字化转型的需求日益迫切,其IT架构面临着互联网融合业务中海量用户和快速迭代的巨大挑战。当前,我们所开发的应用,不管是运行在局域网中还是部署在云端的,都采用了单体架构、分布式架构或微服务架构其中的一种。 其中,采用单体架构的应用数量最多,我们将这种应用简称为单体应用。我们可以将单体应用理解为主要的业务逻辑模块(我们编写的代码模块,不包括独立的中间件)运行在一个进程中的应用,最典型的是跑在Tomcat中的Java Web应用,不管这个应用在内部划分了多少模块,以及是否采用了MVC的分层架构,它都是一个单体应用,因为所有模块都运行在一个Tomcat容器中,位于一个进程里,如图所示是目前应用最为广泛的基于Sping Framework的单体应用的架构图。 单机应用有哪些好处和劣势呢? 好处 技术门槛低 编程工作量少 开发简单快速 调试方便 环境容易搭建 容易发布部署及升级 无论是开发还是运维,其总体成本都很低且见效快 劣势 单体应用的系统比较膨胀与臃肿

待业半年本想放弃Java,抱着试试的心态面试某C轮金融科技公司居然过了!

不打扰是莪最后的温柔 提交于 2020-11-21 21:47:08
个人背景: 开发4年,坐标杭州 金九银十已经过去了,写这篇文章的目的就是与大家谈谈面试方面的经验,心得,就个人方面而言,我之前做过的很多的工作都是面试造核弹,工作拧螺丝。但是不要因为自己是个拧螺丝的就不学哪些难啃的技术。当项目出问题的时候,就是考验技术沉淀的时候。我也迷茫过好长一段时间,学了忘,学了没用, 到底应该怎么成长才能成为一个别人眼中的大神,大牛。 关于面试,关于技术的,我只能说有些路只能靠自己去走,没人可以帮到自己,哪怕偶尔帮一到两次,但是技术的路这么长,总归需要自己独自成长的。 我们遇到每一次面试我们都应该认真对待,有机会一定要多面试,面试是一种非常锻炼自己的方式,不要错过任何—场面试,你 在面试的过程中,和对方讲自己所学,通过对方提问弥补自己的不足,这对自己提升会非常大。 下面我会为大家分享一下我最近的一次面试经历希望对大家有所帮助。总结的不全的地方也请各位海涵,欢迎在评论区留言指正。 下面就是我这次某C轮金融科技公司的面试经历了,总共是四面: 一面(技术面) 重点聊了Java各种集合的实现原理,以及使用场景,主要包括不限于,ArrayList,LinkedList,HashMap,HashSet,TreeMap 线程池的实现原理,线程池中的等待任务只有一个队列,如果线程池中的线程比较多,竞争会比较大,怎么解决? Java中实现高并发的几种策略(COW, cas, 锁

一波三折!业内“大师级Dubbo实战笔记”面世,果然来自阿里

一个人想着一个人 提交于 2020-11-21 12:14:36
过去十多年互联网产业的高速发展,在给社会带来深刻变革的同时,也催生了服务架构的演进:从传统的单体应用到面向服务的SOA,再到现今主流的微服务架构,而 Apache Dubbo就是微服务领域中的先行者和佼佼者。 Apache Dubbo是阿里巴巴于2011年开源的一款高性能Java RPC框架,在这方面阿里巴巴是有强力发言权的,不如跟着阿里的大佬来学一学这份业内公认的 “大师级Dubbo实战笔记” , 点赞+关注支持一下, 戳我免费获取,暗号:CSDN 第1章:Dubbo的简史、后续的规划和整体架构大图 ————Dubbo高性能RPC通信框架 1.1应用架构演进过程 1.2 Dubbo 简介 1.3 Dubbo总体大图 第2章:Dubbo的环境配置和基于Dubbo开发第一款应用程序 ————开发第一款Dubbo 应用程序 2.1配置开发环境 2.2基于XML配置实现 2.3基于注解实现 2.4基于API实现 2.5构建并运行 第3章:Dubbo内置的常用注册中心的实现原理 ————Dubbo注册中心 3.1注册中心概述 3.2订阅/发布 3.3缓存机制 3.4重试机制 3.5设计模式 第4章:Dubbo扩展点加载的原理和实现 ————Dubbo扩展点加载机制 4.1加载机制概述 4.2扩展点注解 4.3 ExtensionLoader 的工作原理 4.4扩展点动态编译的实现 第5章

cgb2007-京淘day17

て烟熏妆下的殇ゞ 提交于 2020-11-20 16:14:08
1. HttpClient 1.1 业务需求说明 1.2 HttpClient介绍 HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了, 越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源 。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目, 用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包 ,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。现在HttpClient最新版本为 HttpClient 4.5 .6(2015-09-11) 1.3 HttpClient入门案例 1.3.1 导入jar包 < ! -- 添加httpClient jar包 -- > < dependency > < groupId > org . apache . httpcomponents < / groupId > < artifactId > httpclient < /