Java分布式系统开发实战
文章平均质量分 81
分享Java开发分布式系统中的技术、问题及解决方案。
跟攀博学Java编程
传智燕青老师拥有近二十年的软件开发和教学经验,曾经录制的SpringMVC/Mybatis课程下载量超10万,Activiti工作流技术、Shiro/SpringSecurity认证授权技术专题、ShardingJDBC数据库分库分表技术专题、Lucene/Solr/Elasticsearch搜索技术专题、Java分布式系统事务控制技术专题、RabbitMQ/RocketMQ消息队列技术专题、医药采购系统、学成在线项目、聚合支付项目等课程广受学员好评。
展开
-
Sharding JDBC教程之读写分离
1 理解读写分离 面对日益增加的系统访问量,数据库的吞吐量面临着巨大瓶颈。 对于同一时刻有大量并发读操作和较少写操作类型的应用系统来说,将数据库拆分为主库和从库,主库负责处理事务性的增删改操作,从库负责处理查询操作,能够有效的避免由数据更新导致的行锁,使得整个系统的查询性能得到极大的改善。 通过一主多从的配置方式,可以将查询请求均匀的分散到多个数据副本,能够进一步的提升系统的处理能力。 使用多主多从的方式,不但能够提升系统的吞吐量,还能够提升系统的可用性,可以达到在任何一个数据库宕机,甚至磁盘物理原创 2021-06-05 08:07:44 · 4405 阅读 · 2 评论 -
跟传智燕青学微服务开发02-搞清负载均衡
什么是负载均衡负载均衡就是将用户请求(流量)通过一定的策略,分摊在多个服务实例上执行,它是系统处理高并发、缓解网络压力和进行服务端扩容的重要手段之一。它分为服务端负载均衡和客户端负载均衡。服务器端负载均衡Nginx属于服务端负载均衡,如下图:在负载均衡器中维护一个可用的服务实例清单,当客户端请求来临时,负载均衡服务器按照某种配置好的规则(负载均衡算法)从可用服务实例清单中选取其一去处理客户端的请求。这就是服务端负载均衡。通过Nginx进行负载均衡,客户端发送请求至Nginx,Nginx通过负载均原创 2021-05-13 09:25:48 · 142 阅读 · 0 评论 -
跟传智燕青学微服务开发01-搞清服务发现
什么是服务发现在微服务架构中,整个系统会按职责能力划分为多个服务,通过服务之间协作来实现业务目标。这样在我们的代码中免不了要进行服务间的远程调用,服务的消费方要调用服务的生产方,为了完成一次请求,消费方需要知道服务生产方的网络位置(IP地址和端口号)。我们的代码可以通过读取配置文件的方式读取服务生产方网络位置,如下:我们通过Spring boot技术很容易实现:Service B(服务生产者)Service B是服务的生产方,暴露/service服务地址,实现代码如下:@SpringBootA原创 2021-05-13 09:20:06 · 160 阅读 · 0 评论 -
Java分布式认证技术方案
序言分布式系统的每个服务(系统)都会有认证、授权的需求,如果每个服务都实现一套认证授权逻辑会非常冗余,考虑分布式系统共享性的特点,需要由独立的认证服务来处理系统认证授权的请求;下图是攀博课堂支付平台架构图,包括:商户平台应用、运营平台应用、门户应用,每个应用都需要身份认证,闪聚支付平台统一由UAA认证服务完成认证。1、前端请求UAA认证服务请求认证,认证通过获取 Token2、前端携带Token访问各各应用。下边介绍UAA认证服务的认证方案。基于session的认证方式在分布式的环境下,基于原创 2021-05-09 16:37:26 · 629 阅读 · 4 评论 -
彻底搞懂JWT令牌
什么是JWT?JSON Web Token(JWT)是一个开放的行业标准(RFC 7519),它定义了一种简洁的、自包含的协议格式,用于在通信双方传递json对象,传递的信息经过数字签名可以被验证和信任。JWT可以使用HMAC算法或使用RSA的公钥/私钥对来签名,防止被篡改。JWT令牌的优点1、jwt基于json,非常方便解析。2、可以在令牌中自定义丰富的内容,易扩展。3、通过非对称加密算法及数字签名技术,JWT防止篡改,安全性高。JWT令牌结构JWT令牌由Header、Payload、Sig原创 2021-05-08 14:54:11 · 631 阅读 · 0 评论 -
RocketMQ同步消息、异步消息、单向消息详解
一、RocketMQ 支持 3 种消息发送方式 :1、同步消息(sync message )producer向 broker 发送消息,执行 API 时同步等待, 直到broker 服务器返回发送结果 。2、异步消息(async message)producer向 broker 发送消息时指定消息发送成功及发送异常的回调方法,调用 API 后立即返回,producer发送消息线程不阻塞 ,...转载 2020-05-07 10:48:25 · 11341 阅读 · 0 评论 -
Java开发实战项目分享之学成在线v1.0项目总结
前言:学成在线项目是传智燕青老师研发的JavaEE分布式微服务架构项目,采用SpringCloud框架研发,课程共20天,应广大学员的建议现将整个项目的技术点以问题的形式进行总结,方便大家学习总结。1 学成在线是个什么样的项目?从两个方面进行阐述:1)项目的功能(业务) 学成在线是一个在线教育平台,提供IT职业课程在线学习,平台包括:门户、学习中心、教学管理中心、系统管理中心、社交系统...原创 2020-05-07 09:44:58 · 2079 阅读 · 0 评论 -
燕青Elasticsearch视频&Lucene视频教程分享
什么是全文检索对互联网项目全文检索是常用的技术,什么是全文检索?全文检索首先将要搜索的目标文档中的词提取出来,组成索引,通过查询索引达到搜索目标文档的目的。 这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。整个全文检索过程分为两个过程,索引和搜索。ElasticsearchElasticsearch是一个基于Lucene的高扩展的分布式搜索服务器...原创 2019-12-25 09:14:21 · 613 阅读 · 0 评论 -
Spring Cloud Alibaba架构实战
Spring Cloud Alibaba 架构实战视频:https://blog.csdn.net/weixin_44062339/article/details/103394897完整讲义:http://www.pbteach.com/post/java_video/nacos-discovery/http://www.pbteach.com/post/java_video/nacos-c...原创 2019-12-04 21:45:33 · 4988 阅读 · 4 评论 -
Nacos视频教程分享
Spring Cloud是一个较为全面的微服务框架集,它制定了微服务开发的标准并整合了很多优秀的框架,SpringCloud整合框架较多的比如Netflix公司的Hystrix、Zuul等。SpringCloud Alibaba是阿里巴巴公司基于Spring Cloud所开发的一套微服务框架集,其中Nacos是阿里开源的配置管理与服务发现中心,配置管理和服务发现在微服务系统中是必不可少的,Naco...原创 2019-12-04 21:35:39 · 2767 阅读 · 4 评论 -
跟燕青学Apollo分布式配置中心-Apollo快速入门
1 Apollo快速入门1.1 执行流程操作流程如下:1、在Apollo配置中心修改配置2、应用程序通过Apollo客户端从配置中心拉取配置信息 用户通过Apollo配置中心修改或发布配置后,会有两种机制来保证应用程序来获取最新配置:一种是Apollo配置中心会向客户端推送最新的配置;另外一种是Apollo客户端会定时从Apollo配置中心拉取最新的配置,通过以上两种机制共同来保证应...原创 2019-11-04 21:19:36 · 745 阅读 · 0 评论 -
跟燕青学Nacos系列06-Nacos集群部署
集群部署3个或3个以上Nacos节点才能构成集群(1)安装3个以上Nacos我们可以复制之前已经解压好的nacos文件夹,分别命名为nacos、nacos1、nacos2(2)配置集群配置文件在所有nacos目录的conf目录下,有文件cluster.conf.example,将其命名为cluster.conf,并将每行配置成ip:port。(请配置3个或3个以上节点)# ip:por...原创 2019-11-04 21:09:26 · 526 阅读 · 0 评论 -
跟燕青学Nacos系列05-Nacos配置管理
Nacos支持基于Namespace和Group的配置分组管理,以便用户更灵活的根据自己的需要按照环境或者应用、模块等分组管理微服务的大量配置,在配置管理中主要提供了配置历史版本、回滚、订阅者查询等核心管理能力。配置列表点击Nacos控制台的配置管理->配置列表菜单,即可看到以下界面展示:界面中展示了不同namespace下的配置集列表,可点击左上角的不同namespace进行切换。...原创 2019-11-04 21:03:41 · 306 阅读 · 0 评论 -
燕青Apollo视频教程分享
1 课程内容介绍 本课程是燕青老师录制的Apollo分布式配置中心课程,不仅讲解了Apollo配置中心的使用方法及原理,而且通过案例讲解了如何构建分布式系统配置中心具体方案,通过从理论到实战的学习可以快速将Apollo配置中心技术应用到项目中。 本着从解决生产实际问题出发,讲授分布式系统配置中心的实现方案,本课程采用携程开源的Apollo配置中心作为技术方案,从Apollo的应用、原理、项...原创 2019-10-31 08:18:18 · 1400 阅读 · 0 评论 -
跟燕青学Nacos系列04-Nacos命名空间管理
namespace 隔离设计namespace 的设计是 nacos 基于此做多环境以及多租户(多个用户共同使用nacos)数据(配置和服务)隔离的。从一个租户(用户)的角度来看,如果有多套不同的环境,那么这个时候可以根据指定的环境来创建不同的 namespce,以此来实现多环境的隔离。例如,你可能有开发,测试和生产三个不同的环境,那么使用一套 nacos 集群可以分别建以下三个不同的 na...原创 2019-10-30 22:38:42 · 3106 阅读 · 0 评论 -
跟燕青学Nacos系列03-Nacos配置管理模型
对于配置管理,应用通过Namespace、group、Data ID的配置能够定位到一个配置集。配置集(Data ID)在系统中,一个配置文件通常就是一个配置集,一个配置集可以包含了系统的各种配置信息,例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。每个配置集都可以定义一个有意义的名称,就是配置集的ID即Data ID。配置项配置集中包含的一个个配置内容就是配置项。它代表一...原创 2019-10-30 22:34:47 · 372 阅读 · 0 评论 -
跟燕青学Nacos系列02-Nacos配置管理入门
发布配置首先在nacos发布配置。浏览器访问 http://127.0.0.1:8848/nacos ,打开nacos控制台,并点击菜单配置管理->配置列表:在Nacos添加如下的配置:Data ID: nacos-simple-demo.yamlGroup : DEFAULT_GROUP配置格式: YAML配置内容: common: con...原创 2019-10-30 22:28:57 · 310 阅读 · 0 评论 -
跟燕青学Nacos系列01-Nacos安装
Nacos简介Nacos是阿里的一个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。官方介绍是这样的:Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构的服务基...原创 2019-10-30 22:21:42 · 435 阅读 · 0 评论 -
Elastic-job视频教程
系列讲义:http://www.pbteach.com/post/java_distribut/elasticjob_yq_doc/1 课程内容介绍 本课程不仅讲解了Elastic-job分布式任务调度的使用方法及原理,而且通过案例讲解了如何构建分布式系统任务调度具体方案,通过从理论到实战的学习可以快速将Elastic-job分布式任务调度技术应用到项目中。 本着从解决生产实际问题出发...原创 2019-10-24 08:02:49 · 936 阅读 · 1 评论 -
SpringSecurity视频教程
1 课程内容介绍 本课程讲解了Spring Security认证框架的使用方法和工作原理以及OAuth2.0认证协议,通过案例讲解单体系统及分布式系统的认证授权技术方案,包括:基于Session的认证方式,基于Token的认证方式以及 Spring Cloud Security Oauth2.0认证方案,学完本课程可以快速将认证授权技术应用到项目中。2 课程章节章节一:基础概念什...原创 2019-10-17 08:40:36 · 4648 阅读 · 9 评论 -
SpringBoot+FastDFS+Vue.js搭建分布式文件系统
1 什么是分布式文件系统1.1什么是文件系统引用“百度百科”中的描述: 总结:文件系统是负责管理和存储文件的系统软件,它是操作系统和硬件驱动之间的桥梁,操作系统通过文件系统提供的接口去存取文件,用户通过操作系统访问磁盘上的文件。如下图:常见的文件系统:FAT16/FAT32、NTFS、HFS、UFS、APFS、XFS、Ext4等 。思考:如果没有文件系统我们该怎么管理自己的文件?...原创 2019-10-15 23:37:26 · 2988 阅读 · 0 评论 -
分布式文件系统FastDFS安装
1 fastDSF介绍 FastDFS是用c语言编写的一款开源的分布式文件系统,FastDFS专为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。 为什么要使用fastDFS呢? 上边介绍的NFS、GFS都是通用的分布式文件系统,通用的分布式文件系统的优点的是开发体...原创 2019-10-15 23:34:24 · 384 阅读 · 0 评论 -
彻底弄清什么是分布式事务?
什么分布式事务?搞清楚这个问题我们从什么是事务开始。什么事务?什么是事务?举个生活中的例子:你去小卖铺买东西,“一手交钱,一手交货”就是一个事务的例子,交钱和交货必须全部成功,事务才算成功,任一个活动失败,事务将撤销所有已成功的活动。明白上述例子,再来看事务的定义:事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。- 什么是本地事务?在计算...原创 2019-08-10 08:14:26 · 1165 阅读 · 0 评论 -
分布式事务CAP理论
一、理解CAPCAP是 Consistency、Availability、Partition tolerance三个词语的缩写,分别表示一致性、可用性、分区容忍性。下边我们分别来解释:为了方便对CAP理论的理解,我们结合电商系统中的一些业务场景来理解CAP。如下图,是商品信息管理的执行流程:整体执行流程如下:1、商品服务请求主数据库写入商品信息(添加商品、修改商品、删除商品)2、主...原创 2019-08-18 23:07:29 · 6630 阅读 · 0 评论 -
分布式事务BASE理论
1、理解强一致性和最终一致性CAP理论告诉我们一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)这三项中的两项,其中AP在实际应用中较多,AP即舍弃一致性,保证可用性和分区容忍性,但是在实际生产中很多场景都要实现一致性,比如前边我们举的例子主数据库向从数据库同步数据,即使不要一致性,但是最终也要...原创 2019-08-18 23:09:42 · 1166 阅读 · 0 评论 -
分布式事务2PC和TCC有啥不同
一、 什么是2PC2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase),2是指两个阶段,P是指准备阶段,C是指提交阶段。举例:张三和李四好久不见,老友约起聚餐,饭店老板要求先买单,才能出票。这时张三和李四分别抱怨近况不如意,囊中羞涩,都不愿意请客,这时只能AA。只有张三和李四都付款,老板才能出票安排就餐。但由于张三和...原创 2019-08-18 23:15:12 · 8916 阅读 · 2 评论 -
RocketMQ分布式事务解决方案-可靠消息一致性
什么是可靠消息最终一致性可靠消息最终一致性方案是指当事务发起方执行完成本地事务后并发出一条消息,事务参与方(消息消费者)一定能够接收消息并处理事务成功,此方案强调的是只要消息发给事务参与方最终事务要达到一致。此方案是利用消息中间件完成,如下图:事务发起方(消息生产方)将消息发给消息中间件,事务参与方从消息中间件接收消息,事务发起方和消息中间件之间,事务参与方(消息消费方)和消息中间件之间都是...原创 2019-08-20 08:07:25 · 3650 阅读 · 1 评论 -
Sharding-JDBC视频
1 课程内容介绍本课程讲解关系型数据库分库分表解决方案,包括:垂直分库、垂直分表、水平分库、水平分表、读写分离,涵盖了分库分表的各种方案,并且深入讲解Sharding-JDBC框架的原理及使用方法, 本课程从思想原理、技术框架、案例实操三个方面去学习,可以快速的将分库分表技术应用到生产实践中,解决大数据存储与处理的问题。2 课程章节章节一:概述什么是分库分表分库分表的方式分库分表...原创 2019-09-30 21:39:01 · 5761 阅读 · 6 评论 -
Seata实现2PC事务控制
目标通过学习本案例学习Seata实现2PC事务控制的方法及Seata的工作原理。案例说明本示例通过Seata中间件实现分布式事务,模拟两个账户的转账交易过程。两个账户在三个不同的银行(张三在bank1、李四在bank2),bank1和bank2是两个个微服务。交易过程是,张三给李四转账指定金额。上述交易步骤,要么一起成功,要么一起失败,必须是一个整体性的事务。程序组成部分说明数据库...原创 2019-09-01 08:53:00 · 3750 阅读 · 0 评论 -
Seata实现2PC事务控制执行原理
目标通过Seata分布式事务控制的测试,理解Seata内部执行流程。Seata正常提交Seata异常回滚1、每个RM使用DataSourceProxy连接数据库,其目的是使用ConnectionProxy,使用数据源和数据连接代理的目的就是在第一阶段将undo_log和业务数据放在一个本地事务提交,这样就保存了只要有业务操作就一定有undo_log。2、在第一阶段undo_log中存...原创 2019-09-01 09:02:04 · 1393 阅读 · 0 评论 -
Hmily实现TCC事务控制
目标通过本案例的学习,掌握Hmily实现TCC事务控制的方法,掌握TCC事务控制的思想。Hmily介绍Hmily是一个高性能分布式事务TCC开源框架。基于Java语言来开发(JDK1.8),支持Dubbo,Spring Cloud等RPC框架进行分布式事务。它目前支持以下特性:支持嵌套事务(Nested transaction support).采用disruptor框架进行事务日志的...原创 2019-09-01 09:15:04 · 3166 阅读 · 10 评论 -
做项目必须懂的三个概念 认证、会话、授权
1 认证、授权、会话基础概念什么是认证进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条等,下边拿微信来举例子说明认证相关的基本概念,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微信,输入账号和密码登录微信的过程就是认证。系统为什么要认证?认证是为了保护系统的隐私数据与资源,用户的身份合法方可访问该系统的资源。认证 :用户认证就是判断一个用户的身份...原创 2019-09-30 22:02:02 · 2017 阅读 · 3 评论 -
彻底搞清分库分表(垂直分库,垂直分表,水平分库,水平分表)
分库分表是什么下边以电商系统中的例子来说明,下图是电商系统卖家模块的表结构:通过以下SQL能够获取到商品相关的店铺信息、地理区域信息:SELECT p.*,r.[地理区域名称],s.[店铺名称],s.[信誉]FROM [商品信息] p LEFT JOIN [地理区域] r ON p.[产地] = r.[地理区域编码]LEFT JOIN [店铺信息] s ON p.id = s.[所属...原创 2019-09-03 07:49:27 · 122731 阅读 · 71 评论 -
Sharding-Jdbc分平分表快速入门
Sharding-Jdbc介绍Sharding-JDBC是当当网研发的开源分布式数据库中间件,从 3.0 开始Sharding-JDBC被包含在 Sharding-Sphere中,之后该项目进入进入Apache孵化器,4.0版本之后的版本为Apache版本。ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Prox...原创 2019-09-06 07:42:04 · 1004 阅读 · 0 评论 -
mysql主从同步配置(windows)
环境和目标本机(windows)上已经安装了一个MySQL(5.7), 安装过程略。目标:实现MySQL主从同步,原MySQL为主,创建一个新的MySQL实例为从。新增mysql实例复制原有mysql如:D:\mysql-5.7.25(作为主库) -> D:\mysql-5.7.25-s1(作为从库),并修改以下从库的my.ini:[mysqld]#设置3307端口po...原创 2019-09-11 07:53:51 · 289 阅读 · 0 评论 -
燕青分布式系统开发之分布式事务解决方案视频(2天)
1 课程内容介绍随着互联网的快速发展,软件系统由原来的单体应用转变为分布式应用,分布式系统会把一个应用系统拆分为可以独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成的事务称之为分布式事务,例如用户注册送积分事务、创建订单减库存事务,银行转账事务等都是分布式事务。分布式事务被称为业界难题,本课程作为分布式事务解决方案的专...转载 2019-09-19 07:58:24 · 2130 阅读 · 6 评论 -
SpringCloud集成RocketMQ实现事务消息方案
前边的话当前SpringCloud作为微服务开发的首选开源方案提供了完善的微服务开发技术套件,不过针对分布式领域的难题–分布式事务控制并没有成熟的方案,本篇将介绍作为柔性事务控制的优秀方案RocketMQ的使用原理和方法。通过本案例的学习,掌握SpringCloud集成RocketMQ事务分布式事务控制的方法。RocketMQ事务消息方案RocketMQ 是一个来自阿里巴巴的分布式消息中间...原创 2019-09-01 10:19:17 · 31044 阅读 · 20 评论