首页 > 编程语言 >[26章]Java主流分布式解决方案多场景设计与实战

[26章]Java主流分布式解决方案多场景设计与实战

时间:2023-10-27 13:32:04浏览次数:43  
标签:26 服务 框架 Zookeeper Apache Java 节点 分布式

点击下载:[26章]Java主流分布式解决方案多场景设计与实战 提取码:q5p5 


Java主流分布式解决方案多场景设计与实战课程,计划26章,同步更新中。

随着互联网数据井喷式的发展,分布式技术应运而生。分布式因其高性能、高可用、高扩展的特点,成为微服务项目的基石。本课程针对分布式六大主流问题进行多方案对比解析,多场景实战讲解,让你深度掌握分布式原理和实战。 《Java主流分布式解决方案多场景设计与实战》分别从源码、手撸框架、实战演练等多个方面进行多维度深入讲解,让你轻松掌握分布式各种解决方案,掌握分布式解决方案的设计和架构能力,跻身分布式高手行列。

分布式基础 1、集群、分布式、SOA、微服务的概念及区别 集群:不同服务器部署同一套应用服务对外提供访问,实现服务的负载均衡或者互备(热备,主从等),指同一种组件的多个实例,形成的逻辑上的整体。单个节点可以提供完整服务。集群是物理形态 分布式:服务的不同模块部署在不同的服务器上,单个节点不能提供完整服务,需要多节点协调提供服务(也可以是相同组件部署在不同节点、但节点间通过交换信息协作提供服务),分布式强调的是工作方式 SOA:面向服务的架构,一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务通常以独立的形式存在于操作系统进程中。各个服务之间通过网络调用。 微服务:在 SOA 上做的升华,微服务架构强调的一个重点是业务需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。 单体应用升级成分布式应用,绝对不仅仅是由技术上可以解决的,不是技术OK就OK了,你会dubbo了,你会springclud了就可以保证迁移成分布式的,这一点一定要明白要认可。这些问题解决涉及业务部门及整个技术部门(开发、测试、 运维 )协商与工作标准的制定。而且在升级过程中也不是一次性升级的,如果一次性升级的只会【SI】的惨。 业务相关问题暂不做讨论,如何和业务部门进行友好的协商,如何将单体应用迁移成为分布式,每个公司不同的业务,不同的环境,这里就不讨论了。技术架构上应该要清楚自己的职责是,如何通过技术手段把业务波动降至最低、开发成本最低、实施风险最低。 要解决这些问题的前提之一就是要对 分布式架构 有整体的认知,不是你会个分布式框架,会个RPC框架就搞的定的。相信举上边的例子大家应该是深有感触的。 是在实践过程中基于CAP理论演化而来的,基本可用,软状态,最终一致性

基本可用:是指分布式系统在出现不可预知故障的时候,允许损失部分可用性。即保证核心可用 软状态:指系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延迟 最终一致性:所有数据副本经过一定时间后,最终能够达到一致的状态 核心思想:既然无法做到强一致性,但每个应用都可以跟据自身业务特点,采用适当的方式来使系统达到最终一致性,也就是牺牲数据的一致性来满足系统的高可用性,系统中一部分数据不可用或不一致时,仍需要保持系统整体基本可用。 这只是Java中一些流行的分布式计算框架的简要介绍。根据具体需求和场景,还有其他框架可供选择。 Apache Hadoop:一个用于分布式存储和并行处理大数据集的开源框架。它包括Hadoop分布式文件系统(HDFS)和MapReduce计算模型。 Apache Spark:一个快速、通用的大规模数据处理框架。它支持内存计算,可以在磁盘和内存中同时进行数据处理和分析。 Apache Flink:一个流处理和批处理的开源平台,支持低延迟的、高吞吐量的分布式数据处理。 Apache Storm:一个实时数据处理框架,可用于分布式流处理。它支持可靠性、可扩展性和容错性,并保证数据的实时处理。 Apache Samza:一个用于流处理的分布式计算框架,支持有状态的流处理,可以与Apache Kafka集成。 Apache Beam:一个用于批处理和流处理的统一编程模型,支持多种分布式计算框架,如Apache Flink、Apache Spark和Google Cloud Dataflow等。 Spring Cloud Data Flow:一个用于构建和运行数据微服务的框架,支持各种分布式计算框架和数据处理工具。 Hazelcast:一个开源的内存数据网格平台,提供分布式数据存储和计算能力,可用于构建分布式系统和应用 【watch机制】一种基于事件的监听机制,可以让客户端对ZK上的节点和事件进行监听。 【临时节点】ZK上的一种特殊节点,它们在创建它们的客户端会话结束时会被自动删除。 在Zookeeper分布式锁服务中,watch机制和临时节点通常会一起使用。 通过Zookeeper的临时节点和watch机制,可以实现分布式锁的获取、释放和超时释放。 将锁的锁定状态存储在Zookeeper节点上,并通过Zookeeper的watch机制来实现锁的竞争和通知。 Zookeeper的watch机制和临时节点是实现分布式锁服务的重要机制,它利用了Zookeeper的分布式协调和通知机制,可以有效地实现多个进程或线程之间的互斥访问和同步。

当一个进程或线程想要获取锁时,它会在Zookeeper上创建一个临时顺序节点,并设置一个watch,并等待其他进程或线程释放锁。当锁被释放时,Zookeeper会通知等待的进程或线程,它们就可以获取锁了。当等待的进程或线程收到通知后,它们可以检查临时节点是否存在

如果存在,就说明有其他进程或线程持有了锁,自己还需要继续等待; 如果不存在,就说明锁已经被释放了,自己可以获取锁了。 基于Redis实现缓存 3.1搭建环境 3.1.1 添加核心依赖 org.springframework.boot spring-boot-starter-data-redis3.1.2 配置Redis@Configuration public class RedisConfig {

@Autowired
private RedisTemplate redisTemplate;

//序列化设置一下
@PostConstruct
public void setRedisTemplate() {
    redisTemplate.setKeySerializer(new StringRedisSerializer());
    redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
}

}

标签:26,服务,框架,Zookeeper,Apache,Java,节点,分布式
From: https://blog.51cto.com/u_16251001/8053559

相关文章

  • 甲骨文真的要开放Java EE?
    甲骨文表示,目前正在与可能的几个候选基金会,以及许可证持有者和社区在进行谈判。随着JavaEE8平台的确定,甲骨文在周四表示,目前正在考虑将JavaEnterpriseEdition技术转移到开源社区。甲骨文在其博客中说道,这次的转移,可能是正确的下一步行动,为了采用更灵活的流程,实现更灵......
  • javaweb--sql查询DQL
    基础查询别名selectmathas'数学成绩'english'英语成绩'fromstu条件查询几点注意事项1、null值的比较不能用=或者!=,只能使用isnull或者isnotnull2、可以使用betweenand来匹配一段数值whereagebetween20and303、<>和!=的作用相同4、or可以用数组的形式表示......
  • Java拾贝第十一天——IO流之打印流
    Java拾贝不建议作为0基础学习,都是本人想到什么写什么在整个IO包中,打印流是输出信息最方便的类。主要包括字节打印流(PrintStream)和字符打印流(PrintWriter)打印流没有输入流,所以没有输入输出这个说法,都是输出PrintStream字节打印属于OutputStream的子类,PrintStream的构造方......
  • 微软全新人工智能Copilot加持!Win11 23H2将于9月26日正式发布
    微软在昨天举行秋季发布会,除了带来新的Surface硬件外,重头戏还有Win1123H2。在发布会上微软宣布将于本月26日发布Windows11的下一个大更新23H2,据介绍本次系统更新将会有超过150项新功能,包括新的人工智能驱动的WindowsCopilot功能、重新设计的文件资源管理器、针对手写笔用户的新......
  • Java中logback的学习
    转:https://blog.csdn.net/lijiafa/article/details/109465399Logback常用配置介绍LOGBack简介官方手册:https://logback.qos.ch/manual/introduction.html介绍作者CekiGülcü在Java日志领域世界知名。他创造了Log4J,这个最早的Java日志框架即便在JRE内置日志功能的竞争下仍然......
  • JAVA SWING之JFrame和JPanel布局
    初学JAVA的时候学习过SWING,每次写程序就直接复制Jframe和Jpanel设置,再调一下大小(不知道有没有人跟我一样),到现在也不清楚它们有什么关系,才回顾学习。Swing虽然是很老的技术了,但也有很多工具是Swing写的例如JetBrains系列,最常用的IDEA。开发一下小工具还是不错的。掌握整体布局后,再......
  • 在JavaScript中创建多行字符串
    内容来自DOChttps://q.houxu6.top/?s=在JavaScript中创建多行字符串在JavaScript中,等效的代码如下:consttext=`ThisIsAMultilineString`;更新:ECMAScript6(ES6)引入了一种新的字面量类型,即模板字面量。它们具有许多功能,包括变量插值等等,但最重要的是对于这个问题,它......
  • 分布式链路追踪系统zipkin【杭州多测师_王sir】
    一、部署zipkin环境的方式==》1.docker  2、java-jar   3、运行源码二、分别可以在Linux系统和Windows系统里面运行zipkin三、在地址栏输入:http://127.0.0.1:9411四、zipkin的流程图由上图可以看出,应用的代码(User Code)发起 Http Get 请求(请求路径 /foo),经过 Zipkin......
  • 一步步带你剖析Java中的Reader类
     本文分享自华为云社区《深入理解Java中的Reader类:一步步剖析》,作者:bug菌。前言  在Java开发过程中,我们经常需要读取文件中的数据,而数据的读取需要一个合适的类进行处理。Java的IO包提供了许多类用于数据的读取和写入,其中Reader便是其中之一。本文将对Java中的Reader进行详细介......
  • Mac brew安装Java8 && Mac配置多个Java版本
    安装Java8 1.打开终端,输入以下命令安装brew: `/usr/bin/ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"` 2.安装Java8: `brewtapcaskroom/versions` `brewcaskinstalljava8` 3.验证Java8是否安装成功: `j......