全部版块 我的主页
论坛 数据科学与人工智能 IT基础 Scala及其他JVM语言
2963 0
2023-10-27
Java主流分布式解决方案多场景设计与实战课程(附源码)
学习地址1:https://pan.baidu.com/s/1UuVZc0-IbLsGG6Lm5ftE0w 提取码:nu98
学习地址2:https://pan.baidu.com/s/1Whb7nFnv9vhhbDiI6HRc8w 提取码:z1wg

一、Java分布式有哪些?
布式分为分布式缓存(Redis)、分布式锁(Redis 或 Zookeeper)、分布式服务(Dubbo 或 SpringCloud)、分布式服务协调(Zookeeper)、分布式消息队列(Kafka 、RabbitMq)、分布式 Session 、分布式事务、分布式搜索(Elasticsearch)等。不可能所有分布式内容都熟悉,一定要在某个领域有所专长。

二、分布式基础
1、集群、分布式、SOA、微服务的概念及区别
集群:不同服务器部署同一套应用服务对外提供访问,实现服务的负载均衡或者互备(热备,主从等),指同一种组件的多个实例,形成的逻辑上的整体。单个节点可以提供完整服务。集群是物理形态

分布式:服务的不同模块部署在不同的服务器上,单个节点不能提供完整服务,需要多节点协调提供服务(也可以是相同组件部署在不同节点、但节点间通过交换信息协作提供服务),分布式强调的是工作方式

SOA:面向服务的架构,一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务通常以独立的形式存在于操作系统进程中。各个服务之间通过网络调用。

微服务:在 SOA 上做的升华,微服务架构强调的一个重点是业务需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。

三、什么是分布式事务?产生的原因
分布式事务指事务的操作位于不同的节点上,需要保证事务的ACID的特征。例如下单场景,库存和订单不在同一个节点。

四、分布式服务治理
服务协调(用分布式锁实现)
服务协调:多个进程可能对同一个资源进行访问,造成结果的不一致等情况
分布式协调技术主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序去访问某种临界资源,防止造成“脏数据”的后果

五、分布式中的远程调用
在微服务架构中,通常存在多个服务之间的远程调用的需求。远程调用通常包含两个部分:序列化和通信协议。常见的序列化协议包括json、xml、hession、protobuf、thrift、text、bytes等,目前主流的远程调用技术有基于HTTP的RESTful接口以及基于TCP的RPC协议。

六、配置分布式组件的环境
首先,你需要在项目中添加相应的依赖,以便使用分布式组件提供的功能。这可以通过在项目的构建配置文件(比如pom.xml)中添加以下代码来实现:
<dependencies>
    <!-- 添加分布式组件的依赖 -->
    <dependency>
        <groupId>org.apache.distributed.component</groupId>
        <artifactId>distributed-component</artifactId>
        <version>1.0.0</version>
    </dependency>
</dependencies>

七、什么是分布式系统?
要理解分布式系统,主要需要明白一下2个方面:
1.分布式系统一定是由多个节点组成的系统。
其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。
2.这些连通的节点上部署了我们的节点,并且相互的操作会有协同。
分布式系统对于用户而言,他们面对的就是一个服务器,提供用户需要的服务而已,而实际上这些服务是通过背后的众多服务器组成的一个分布式系统,因此分布式系统看起来像是一个超级计算机一样。
例如淘宝,平时大家都会使用,它本身就是一个分布式系统,我们通过浏览器访问淘宝网站时,这个请求的背后就是一个庞大的分布式系统在为我们提供服务,整个系统中有的负责请求处理,有的负责存储,有的负责计算,最终他们相互协调把最后的结果返回并呈现给用户。

八、java分布式框架有以下5种:
1、Ehcache – java分布式缓存框架;
2、Cacheonix – 高性能java分布式缓存系统;
3、ASimpleCache – Android缓存框架;
4、JBoss Cache – 基于事物java缓存框架;
5、Voldemort – 基于键值的缓存框架。

九、分布式的优缺点
1、 优点
会把模块拆分,使用接口通信,从而降低模块之间的耦合度。
会把项目拆分成若干个子项目,不同的团队负责不同的子项目。
增加功能灵活,只需要增加一个子项目,调用其他系统的接口就可以。
能够灵活的进行分布式部署.。
代码复用性提升极大。
2、 缺点
系统之间交互需使用远程通信,使接口开发增大工作量。
部署单个服务会比较快,但是如果一次部署需要多个服务,部署会变得复杂。
系统的吞吐量会变大,但是响应时间会变长。
测试和查错的复杂度增大。
提高了维护和运维的复杂度。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群