Dubbo

SSM商城项目(二)

折月煮酒 提交于 2021-01-16 04:10:46
1. 学习 计划 1、将工程改造为基于SOA 架构 2、商品列表查询功能实现。 2. 将工程改造为 SOA 架构 2.1. 分析 由于 商城是基于 soa 的架构,表现层和服务层是不同的工程。所以要实现商品列表查询需要两个系统之间进行通信。 如何实现远程通信? 1 、 Webservice :效率不高基于 soap 协议。项目中不推荐使用。 2 、使用 restful 形式的服务: http+json 。很多项目中应用。如果服务太多,服务之间调用关系混乱,需要治疗服务。 3 、 使用 dubbo 。使用 rpc 协议进行远程调用,直接使用 socket 通信。传输效率高,并且可以统计出系统之间的调用关系、调用次数 。 2.2. dubbo 2.2.1. 什么是 dubbo 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架 (ORM) 是关键。 垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。 此时,用于加速前端页面开发的 Web 框架 (MVC) 是关键。 分布式服务架构

对标阿里P7的Java后端开发面试总结,搞定90%以上的技术面【2021最新!】

本秂侑毒 提交于 2021-01-15 19:10:34
前言 本文档是从阿里面试官整理的Java面试题;包含了Java基础、Java集合容器、Java异常、并发编程、JVM、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、Redis、MySQL数据库、消息中间件MQ与RabbitMQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty、 架构设计&分布式&数据结构与算法等等,都是互联网大厂的面试真题,已经有粉丝靠这份PDF拿下众多大厂的offer。 每一份面试文档的左侧都有文档大纲,这也是为了方便大家阅读,特别整理的;文章限于篇幅,故这里只是部分的截图展示。 有需要答案解析的朋友可以关注公众号: 麒麟改bug 。 小编这篇分享篇幅可能有点长,观看的朋友可以先了解一下目录 JavaOOP面试题——108道 Java集合/泛型面试题——24道 Java异常面试题——8道 Java中的IO与NIO面试题——15道 Java反射面试题——10道 Java序列化面试题——10道 Java注解面试题——2道 多线程&并发面试题——108道 JVM面试题——87道 Mysql面试题——83道 Redis面试题——50道 Memcached面试题——24道 MongoDB面试题——95道 String面试题——131道 Spring Cloud面试题——35道

对标阿里P7的Java后端开发面试总结,搞定90%以上的技术面【2021最新!】

自古美人都是妖i 提交于 2021-01-15 15:35:35
前言 本文档是从阿里面试官整理的Java面试题;包含了Java基础、Java集合容器、Java异常、并发编程、JVM、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、Redis、MySQL数据库、消息中间件MQ与RabbitMQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty、 架构设计&分布式&数据结构与算法等等,都是互联网大厂的面试真题,已经有粉丝靠这份PDF拿下众多大厂的offer。 每一份面试文档的左侧都有文档大纲,这也是为了方便大家阅读,特别整理的;文章限于篇幅,故这里只是部分的截图展示。 有需要答案解析的朋友可以关注公众号: 麒麟改bug 。 小编这篇分享篇幅可能有点长,观看的朋友可以先了解一下目录 JavaOOP面试题——108道 Java集合/泛型面试题——24道 Java异常面试题——8道 Java中的IO与NIO面试题——15道 Java反射面试题——10道 Java序列化面试题——10道 Java注解面试题——2道 多线程&并发面试题——108道 JVM面试题——87道 Mysql面试题——83道 Redis面试题——50道 Memcached面试题——24道 MongoDB面试题——95道 String面试题——131道 Spring Cloud面试题——35道

浅谈微服务架构与服务治理的Eureka和Dubbo

喜欢而已 提交于 2021-01-15 05:05:19
前言 本来计划周五+周末三天自驾游,谁知人算不如天算,周六恰逢台风来袭,湖州附近的景点全部关停,不得已只能周五玩完之后,于周六踩着台风的边缘逃回上海。周末过得如此艰难,这次就聊点务虚的话题,一是浅谈微服务的架构设计,二是聊聊微服务中广泛用于服务治理的Eureka与RPC框架Dubbo异同点。 一、微服务的架构设计 之所以想聊一下这个话题,主要有感于最近接触的两个新的微服务项目--两个项目的架构设计出自两个人之手,却不约而同的使用了相同的设计理念,项目结构非常类似。又想到就职于上家公司时接触到的项目的结构设计,于是迸发出了些微的想法。用微服务的架构设计来作为议题,很有喧哗取宠的偏向,所以需要声明一下,本文说的都是基于博主当前浅薄的软件开发经验与贫瘠的架构设计思想得出的浅见,仅是一家之言,而且其中必定包含了很多的确认型偏误,对此现在无法避免。本文的目的只是与大家分享一下自己的想法,仅此而已。 言归正传,当前流传的比较广且提的比较多的设计理念,当属2004年Eric Evans提出的Domain Drive Design,即领域驱动设计,简称DDD。该设计理念可以说与微服务具有相当大的共生依赖关系,也因此,直到最近几年微服务兴起,DDD设计理念才大行其道。该设计理念就是先确定领域,再在此基础上进行设计开发。而领域怎么理解?通俗的理解方式就是一个独立的业务模块,以业务的范围来确定领域的边界

最终一致性案例一(一个支付服务的最终一致性实践案例)

。_饼干妹妹 提交于 2021-01-14 13:34:31
一、前言 “功夫贷”是一款线上贷款 APP,主要是给信用卡优质用户提供纯线上的信用贷款,以期限长、额度高、利息低为主要优势(类似的业务模式主要有宜人贷)。 和任何一种分期贷款一样,符合资质的用户,在功夫贷成功贷款之后,需要在约定还款日还款。目前还款主要有以下这几种方式: 用户在 APP 上主动还款; 系统定时通过后台任务扣款; 催收人员通过内部作业系统,手动发起扣款; 真正的扣款操作(从银行卡扣款)主要是通过第三方支付来完成,比如京东支付、通联等。不同的第三方支付,支持的银行列表和限额不同,费用和稳定性也不尽相同,我们会选择出个最优通道、以及多层级备用通道,为此研发了支付路由系统,同时这些服务商的业务限制 / 出错概率还不低,所以我们又要考虑业务上的一致性,这也是本文要介绍的主题。 扣款业务是比较复杂的,包括如下几个主要步骤: 对业务表 (扣款任务表 / 还款计划表等) 的数据库操作 调用第三方支付 清算入账 这多个子功能需要保证同时成功或者同时失败,其中既有外部第三方调用,又有内部微服务的调用,所以这是个比较典型的分布式事务的场景。由于外部的第三方支付服务有时不稳定、且部分交易可能很长时间才能确认成功。 因此 我们没考虑两阶段提交的分布式事务,而是选择了最终一致性,而为了保证在状态不一致这个时间窗口的准确性 (比如不能在该窗口对用户重复扣款),我们也额外多做了很多的考虑。 二

第三方支付一致性方案

不打扰是莪最后的温柔 提交于 2021-01-14 10:58:08
一、前言 “功夫贷”是一款线上贷款 APP,主要是给信用卡优质用户提供纯线上的信用贷款,以期限长、额度高、利息低为主要优势(类似的业务模式主要有宜人贷)。 和任何一种分期贷款一样,符合资质的用户,在功夫贷成功贷款之后,需要在约定还款日还款。目前还款主要有以下这几种方式: 用户在 APP 上主动还款; 系统定时通过后台任务扣款; 催收人员通过内部作业系统,手动发起扣款; 真正的扣款操作(从银行卡扣款)主要是通过第三方支付来完成,比如京东支付、通联等。不同的第三方支付,支持的银行列表和限额不同,费用和稳定性也不尽相同,我们会选择出个最优通道、以及多层级备用通道,为此研发了支付路由系统,同时这些服务商的业务限制 / 出错概率还不低,所以我们又要考虑业务上的一致性,这也是本文要介绍的主题。 扣款业务是比较复杂的,包括如下几个主要步骤: 对业务表 (扣款任务表 / 还款计划表等) 的数据库操作 调用第三方支付 清算入账 这多个子功能需要保证同时成功或者同时失败,其中既有外部第三方调用,又有内部微服务的调用,所以这是个比较典型的分布式事务的场景。由于外部的第三方支付服务有时不稳定、且部分交易可能很长时间才能确认成功。 因此 我们没考虑两阶段提交的分布式事务,而是选择了最终一致性,而为了保证在状态不一致这个时间窗口的准确性 (比如不能在该窗口对用户重复扣款),我们也额外多做了很多的考虑。 二

程序员如何避免陷入内卷?

橙三吉。 提交于 2021-01-13 23:07:30
前几天有个后端程序员的朋友跟我吐槽说,年初立志:今年升职加薪,进阶架构师。 结果,疫情之下工作差点没保住。今年大部分的时间也一直在重复着「增删改查」,回顾这一年基本没啥进步,内卷严重啊。 实际情况中,往往很多人都是这样。很多后端开发工作年限越高,反而更加面临危机。 薪资不好涨、大厂不好跳、体力在倒退...... 更可怕的是,这样的情况,只是出现在了自己身上!!! 如何才能进阶成一个好的后端开发呢? 简单地说,就是既具备技术整合能力,也通晓技术细节,从而实现技术驱动业务的突破,而不是纠结于某个中间件或存储服务。 IT 技术发展日新月异,想要不被淘汰,一句话: “ 永远不要停止学习 ”。 任何程序员,都得时刻学习。在工作中你如果只会某一语言,但是这样会局限你的工作能力及职业发展。多花费一些时间学习一些最近比较流行的架构体系,比如 Spring Cloud。学以致用,不仅有助于工作,更有助于自己以后的发展。 相信关注我公众号的朋友们,都是追求进步的朋友。拉勾教育的 12.12 年末最后知识大促, 全场专栏都可以砍价到 1 元。 都是原价 98 的专栏,现在 1 块钱就能解锁等于白给。有几个还是 拉勾教育付费用户评选的最具价值 Top10 的专栏 ,给大家推荐推荐: ① 「Java 并发编程核心 78 讲」 原价98,现在 发起砍价仅需 1 元 想成为一名优秀的 Java 开发,学好并发

林昊获中国计算机学会杰出工程师奖,阿里中间件再获高度肯定,“三位一体”推动技术普惠

我们两清 提交于 2021-01-13 14:38:13
来源| 阿里巴巴云原生公众号 1 月 7 日消息,中国计算机学会(CCF)在官网宣布,将 2020 年“CCF 杰出工程师奖”授予给了阿里巴巴集团研究员林昊,以表彰其设计开发了阿里巴巴中间件服务框架 HSF(High Speed Framewok)。此次获奖是中国计算机学会对林昊及阿里中间件技术的双重认可。 中国计算机学会(CCF)是国内计算机领域备受瞩目的年度会议之一,“CCF 杰出工程师奖”设立于 2016 年,每次获奖人数不超过两名,授予在计算机工程技术及应用领域有突出成就和重要贡献者。 林昊自 2007 年加入阿里以来,带队见证并参与了阿里巴巴在中间件等基础技术上的演进与发展,其带头研发的 HSF 高性能架构从分布式应用层面以及统一的发布、调用方式层面为电商系统提供支持,方便开发者开发分布式应用以及调用公用功能模块,无需考虑分布式领域中的各种细节技术,例如远程通讯、性能损耗、调用的透明化、同步/异步调用方式的实现等等问题。在过去 12 年的时间里,HSF 支撑了 618、造物节、双11、双12、年货节等阿里巴巴历次大促活动的顺利进行,交易量逐年创造新高,在 2020 年 双11 更是创下了每秒处理 58.3 万笔订单创建峰值的傲人记录,是阿里巴巴经济体不可缺少的技术基石。 “ 此次获奖是中国计算机学会对阿里中间件技术的认可 ,”颁奖现场林昊发表获奖感言,“

我是如何在短期内快速掌握Dubbo的原理和源码的(纯干货)?

拜拜、爱过 提交于 2021-01-13 12:24:19
写在前面 上周,在【Dubbo系列专题】中更新了两篇文章《 冰河开始对Dubbo下手了! 》和《 俯瞰Dubbo全局,阅读源码前必须掌握这些!! 》,收到了很多小伙伴的微信私聊消息,大部分都是在询问如何快速的掌握Dubbo的原理和源码。针对这个问题,我也在思考如何以更简单、易懂的方式让小伙伴们更好的掌握Dubbo的原理和源码。今天,我就为小伙伴们分享下我是如何快速掌握Dubbo的原理和源码的。 文章已收录到: https://github.com/sunshinelyz/technology-binghe https://gitee.com/binghe001/technology-binghe 阅读源码的前提 阅读某一项技术框架,或者说开源项目的源码前,你必须了解这个框架是干啥用的,说白了,就是你至少了解这个框架该怎么用,在什么场景下用,使用的过程中会遇到哪些坑,如何解决。而学习一个框架,最简单有效的方式就是它的官方文档。Dubbo也不例外,我在学习Dubbo的时候,也是首先看的Dubbo的官方文档,基本没看其他的文章或者资料。为啥?因为Dubbo的官方文档是最权威的,是最可信的。 即使你在项目中没有使用过Dubbo框架,你也可以按照Dubbo的官方文档基于Dubbo写一个简单的示例程序,通过示例能够让自己快速的了解Dubbo。 为何要阅读源码 阅读源码前

Dubbo 版 Swagger 来啦!Dubbo-Api-Docs 发布

余生颓废 提交于 2021-01-12 23:02:12
作者 | 柯然(邪影) 背景 Swagger 是一个规范和完整的前端框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger 规范也逐渐发展成为了 OpenAPI 规范。 Springfox 是一个集成了 Swagger,基于 Sring MVC/Spring Webflux 实现的一个 Swagger 描述文件生成框架,通过使用它定义的一些描述接口的注解自动生成 Swagger 的描述文件,使 Swagger 能够展示并调用接口。 相信很多人都听说和使用过 Swagger 和 Springfox,这里就不再赘述了。 Dubbo-Admin 中有接口测试功能,但是缺少接口描述的文档,所以该测试功能比较适合接口开发人员用于测试接口。而其他人想要使用该功能就必须先通过接口开发者编写的文档或者其他方式,了解清楚接口信息才能使用该功能测试接口。 Dubbo 这边有没有集合文档展示和测试功能,可以不用写文档就能把接口直接给调用方,类似 Swagger/Springfox 的工具呢? 之前做过一些调研,找到一些类似的工具: 有些是基于 Springfox 做的,直接一个文本域放 JSON,与目前 Admin 中的测试功能大同小异。 有些是直接基于 Swagger 的 Java 版 OpenApI 规范生成工具做的,能把一些基础数据类型的简单参数作为表单项展示。