《分布式JAVA应用 基础与实践》 第六章 构建高可用的系统

从构建小系统到架构分布式大系统,Spring Boot2的精髓全在这里了 谈到面试,其实说白了就是刷题刷题刷题,天天作死的刷。。。。。为了准备这个“金三银四”的春招,狂刷一个月的题,狂补超多的漏洞知识,像这次美团面试问的算法、数据库、Redis、设计模式等这些题目都是我刷到过的并且我也将自己刷的题全部整理成了PDF或者Word文档(含详细答案解析)66个Java面试知识点架构专题(MySQL,Java,Redis,线程,并发,设计模式,Nginx,Linux,框架,微服务等)+大厂面试题详解(百度,阿里,腾讯,华为,迅雷,网易,中兴,北京中软等)算法刷题(PDF) 阅读详情

对于互联网或企业中的大型应用而言,多数要求做到7*24小时不间断运行。实际上要完全做到不太可能,但可尽量接近,各大网站或大型应用在总结一年的运行状况时,通常会有当年的可用性为99.9%这样的内容。

为实现类似的高可用,要避免系统中出现单点。

6.1 避免系统中出现单点

单点是指系统部署在单台机器上,一旦这台机器出现问题(硬件损坏,网络不通等),系统就不可用。解决单点最常见的方法是采用集群。采用集群则要系统支持水平伸缩。如何做到水平伸缩,第7单会详细阐述。除水平伸缩外,还需做到以下两点:

1. 保证均衡使用集群内的机器

2. 保证当机器出现问题时,用户不会访问到问题机器

6.1.1 负载均衡技术

       为实现上述两点,通常采用负载均衡技术,其中又分为硬件负载均衡和软件负载均衡。前者由硬件芯片完成功能,后者则由软件来实现。

       无论是硬件还是软件负载均衡,都在系统中增加了负载均衡机器,负载均衡机器为避免自己成为单点,通常由两台购成,一台提供服务,一台standby,一旦提供服务的机器出现问题,syandby这台自动接管。

选择实际业务处理机器的方式

负载均衡机器选择实际业务处理机器主要有如下几种方式

1.      随机(Random)选择

实现最简单,性能最高。可基本保证均衡。适用于处理各种请求时所需消耗的资源相差不是特别大的情况。

2.      Hash选择

对应用层的请求信息做hash,再分发到相应的机器上,典型的应用场景是图片的加载。对请求的图片的url做hash,基本可保证每次请求同一台机器,命中缓存,提升性能。不过,由于它要读应用层的信息,也要做hash,故需要消耗更多的CPU并导致些许的性能下降

3.      (Round-Robin)选择

即根据地址列表按顺序选择。比随机多了一个同步操作,但这个同步操作非常短,性能损失较少。这种方式应用场景和随机方式差不多,目前的硬件和软件负载都支持,实际使用较多。

4.      按权重(weight)选择

根据机器配置不同分配不同权重,以更好地利用机器性能。

5.      按负载(Load)选择

即根据实际业务处理机器的负载来选择。适合于业务处理机器在处理多种请求时所需资源相差较大的情况。这种方式要求负载均衡机器定时采集业务处理机器的负载情况,给负载均衡机器增加了负担,且万一采集过程中出现较大延时或采集不到时,很可能造成严重不均衡,实际使用较少。

6.      按连接(Connection) 选择

根据业务处理机器中连接数的多少来选择,应用于连接数不均衡的场景。这种方式要注意的是,一旦其中一台业务机器重启,且重启瞬间请求量巨大,如10000个,那么,这10000个请求会同时发到新启动的机器上,导致机器宕掉,因此这种方式实际应用较少

 

除以上的选址方式外,通常还会支持按cookie信息绑定访问相同的机器的方式,这样可把用户相关信息绑定到指定服务器上,避免引入分布式缓存等复杂技术,但带来的问题是一旦机器出现故障,在该机器上登录过的用户就要重新登陆了。

此外,实际场景中还有一个典型问题: web server接到负载均衡机器分派过来的请求后,如可以处理,则分派线程来处理,如已达到最大线程数,则放入队列等待。如果前面的请求处理缓慢,后面分派过来的请求就有可能被丢弃或超时。Twitter在此时采用unicorn来解决。Unicorn可理解为到银行办事时的统一叫号,多窗口办事的方式。Lighthttpd也有一个支持这种方式的均衡算法: Shortest Queue First.

响应返回方式

通常支持以下两种方式将响应返回求用户

1.      通过负载均衡机器返回

最常见的简易方式。这种方式,随着请求量上涨,负载均衡机器所受到的压力会迅速上升,特别是对于请求包小、响应包大的Web应用。

2.      直接返回至请求发起方

响应直接返回至请求发起方,以分散负载均衡压力,支持更大请求量。要达到这种效果,须要采用IP Tunneling或DR(DirectRouting, 硬件负载均衡中又简写为DSR:DirectService Routing)方式。IPTunneling方式要求负载均衡机器和实际业务处理机器都支持IP Tunneling;Direct Routing方式要求负载均衡机器和实际的业务处理机器在同一个物理网段中,并且不响应ARP。

 

目前大多数系统 都支持IP Tunniling,Direct Routing对环境要求较高,故通常IP Tunniling更适合。

 

除以上通用实现外,硬件负载和软件负载在实现时有一些细节的不同。

硬件负载均衡

硬件负载设备中最为知名的是F5和Netscalar,他们实现自动接管的方式是采用心跳线的方式。

硬件负载设备大部分操作都在硬件芯片上直接做(例如HASH计算),所以能支撑的量非常高,运行非常稳定,不过有以下两点需要注意

1.      负载设备的流量

一旦负载设备的流量达到上限,就会出现大量访问出错等异常问题,一此要注意监测,一旦接近上限,就必须立即扩充带宽或增加负载设备

2.      长连接

长连接方式的应用采用硬件负载设备很容易出现问题,当某台实际业务服务器重启同时又有大量请求进来时,所有的请求都发到健康的服务器上,并建立起长连接,导致重启后的机器只有很少请求或没有请求,造成严重的负载不均衡。可采用手工断开负载设备上某VIP所有连接的方法来避免,或只允许每个长连接执行一定次数的请求,当达阀值后即关闭此连接。

软件负载方案

最常用的为LVS(Linux Virtual Server),多数情况下采用LVS+Keepalived来避免负载均衡机器的单点,实现负载均衡机器的自动接管。也可采用类似硬件负载设备的方式来实现,即采用心跳线+高可用软件来实现,其中应用最广的高可用软件为heartbeat,      默认情况下heartbeat通过UDP方式来监测。

除LVS外,还用HAProxy也 应用较广。

去中心化实现负载均衡

无论是硬件还是软件负载均衡,都需要在请求的过程中引入了一个中间点,这会对性能、可用性造成一定影响,且由于负载设备在做水平伸缩时,要修改调用方应用,比较麻烦,于是业界出现了基于Gossip实现无中间点的软件负载。Facebook开源的Cassandra就是一个基于Gossip实现的无中心的NOSQL数据库。

去掉中间点后,请求/响应可直接进行,对于性能、可用性都会带来提升。同时,无中间点后,还可以将路由策略放在访问端,从而在不影响性能的情况下实现复杂的路由策略。

以上都是实现本地机器的负载均衡,当系统规模扩大到一定程度后,会要在不同地域建设机房,在不同地域的集群实现负载均衡的技术通常称为全局负载均衡(Global Load Balance)。各负载设备的硬件厂商通常提供了一种称为GSLB(Global Server Load Balance)的设备来实现,可避免由于一个地方的机房出现故障导致系统不可用,同时GSLB还可根据地理位置来选择最近的机器,这也在一定程度上提高了性能。

6.1.2         热备

集群要求系统本身支持水平伸缩,对于系统而言成本偏高,可采用热备作为替代方案。热备的情况下对外服务的机器只有一台,其它机器处理standby状态,standby机器通过心跳机制检查对外服务机器的健康情况,当出现问题时,standby机器即进行接管。

 除单机故障外,还须考虑整个机房出现不可用的情况,故引入多机房方案

使用多机房

       多机房对技术上的要求较高,难点主要为跨机房的状态同步。包括持久数据的同步、内存数据的同步和文件的同步。当机房不在同一个地方时,面临的最大问题是网络延时和各种异常情况,对实时要求高的应用是一个很大的挑战。

数据库数据的同步通常采用单master多slave或多master方案。多mashter方案有多个写入点,实现较为复杂,通常采取两阶段提交、三阶段提交或基于Paxos的方式来保持多master数据的一致性。此外,还可选择PNUTS方式来实现,对多机房方案感兴趣的读者可进一步参考google工程师介绍GAE后端数据服务的PPT。

文件的同步和内存数据的同步方案和数据库数据同步的方案基本相同。

 

6.2 提高应用自身的可用性

应用通常要满足多种多样的功能要求,尤其是互联网应用在不断添加新功能的同时还必须保持高速发展,应用中难免出现bug。在这里介绍一下保障应用自身高可用的常用方法

 

6.2.1 尽可能地避免故障

       要做到这点,一方面要深入理解JAVA类库和框架,另一方面则是经验。以下是一些常见故障点形成的可用性设计原则,这些原则如下。

明确使用场景

一种是设计时过多地考虑复用,没仔细分析使用场景的不同而导致出现故障。另一种是设计时没有从场景去考虑,更多的是从纯技术角度去考虑,设计了很多不必要的功能,如不必要的系统扩展、系统功能等,将系统复杂化,容易造成故障。因此设计时应贴近使用场景,保持系统的简单。对复杂的功能,应分解为多个阶段来完成,保持每个阶段的简单。

设计可容错的系统

       要使系统具备高度的容错能力,主要从两方面进行掌控,一是Fail Fast原则,二是保证接口和对象设计的严谨。

       Fail Fast原则是当主流程的任何一步出现问题时,都应快速结束整个流程,而不是等到后续才来处理。如系统启动阶段要从本地加载一些数据放入缓存,如加载失败,则直接退出JVM,避免启动后不可用;又如代码中判断传入参数非法时直接抛错。

       接口和对象设计的严谨最容易被忽略。通常我们在对外提供接口或对象时,总是假定一定会按照要求去使用,不采取任何的保护措施,这种情况下非常容易产生问题

设计具备自我保护能力的系统

对所有第三方依赖(如对数据库的依赖、存储设备的依赖、其它系统提供的功能的依赖等)的地方都应保持怀疑的态度,对这些地方做一些保护措施,使第三方出现问题时,对应用本身不产生太大的影响,如只是某功能暂时不可用。

限制使用资源

1.      限制内存的使用

主要是注意对JVM内存的使用限制,避免出现频繁Full GC或内存溢出的现象。一是注意避免集合过大,二要注意释放已经不用的对象引用,如使用线程池的同时使用了ThreadLocal, 在线程使用结束后,要进行threadLocal.set(null)操作,否则ThreadLocal里的对象就会一直等待线程退出后才能回收。

2.      限制文件的使用

典型的是日志文件的使用,一是要控制日志文件的大小,二是要控制写日志的频率。

3.      限制网络的使用

对分布式JAVA应用而言,网络的使用是其中重要的一环,对网络资源的限制使用也是非常重要的,具体反映在以下两方面

连接资源

客户端基本都会采用连接池方式避免对服务端创建过多连接,服务端自身也必须控制避免过多连接,以避免出现资源不足导致服务不可用。

操作系统sendBuffer资源

在向服务器发送流时,都是先放入操作系统的sendBuffer区,而sendBuffer区是有限的,因此要适当控制往操作系统sendBuffer区写入的流数量,避免出现问题。

另一方面,由于在发送数据时都要先序列化流,流在发送到操作系统sendBuffer区前会在jvm中存活,因此要注意不要有太多这样的流存在,避免JVM内存耗光。

通常采用流控的方法来避免sendBuffer区资源和JVM内存消耗过多,通常做法有当到达某阀值时直接拒绝发送,或延迟发送。

4.      限制线程的使用

通常使用线程池避免无限制的使用线程。

从其它角度避免故障

除了以上从设计角度的考虑外,编码过程中,还须确保对所用到的框架及JAVA类库的实现都有较深的掌握,同时,还要不时地组织代码review,结合知识库及团队的智慧尽可能地避免代码中的潜在bug。

另外,测试阶段也要注意功能测试和压力测试,保障系统的基本可用性及高压力下的可用性。

部署阶段,也要注意不要对系统的可用性产生影响,这个说易行难,如一个典型的部署步骤为先停集群中一半的机器,更新应用包,然后重启。如果更新或启动的过程太长,另一半提供服务的机器可能就无法支撑全部的流量,最终导致宕机,因此要注意尽量平滑部署。另外,尽量做到自动化部署,虽然这点比较困难。

 

6.2.2 及时发现故障

无论系统怎样完善,要完全避免故障基本不太可能,因此及时发现故障就至关重要。因此,需要对系统的日志的记录和分析来做报警,包括单机状况的报警、集群状况的报警及关键数据的报警。

单机状况的报警用于报告产生了致使影响的点,如CPU使用率过高,某功能点失败率过高,依赖的第三方系统连接出现问题等。

集群状况的报警,通常是在集群的访问状况、响应状况等指标和同期或基线指标对比出现大偏差时发现。

关键数据的报警通常针对系统中的关键功能,如交易类的系统,其最关键的数据是实时交易额,因此当交易额数据和基线指标对比出现大偏差时,就需要报警。

即时发现故障在各大互联网公司中都非常重视,从Twitter、Facebook、盛大、51.com等公开的PPT来看,可以看到它们都拥有一套强大的监测系统,通常具备以下特征:

1.      有系统依赖关系的分析,便于找到故障的root cause

2.      有系统全局状态图显示,既便于找到故障的root cause,也能根据故障点找到目前所影响的功能点

3.      能根据报警规则、级别进行报警,对单机直接处理,避免单机扩散到全局

4.      根据报警信息的记录,跟进记录分析报警的原因及后续的处理步骤,方便为将来再次出现时更快速的处理。

 

6.2.3 及时处理故障

       常见的故障快速处理措施有:

1.      自动修复

通过学习总结发生过的各类故障处理措施,将来再发生时自动智能化处理。难度较大,可先只让系统只提出建议,再逐步完善。

2.      执行风险点应对措施

手工修复是最保险的方式,但机器数量太多的情况下比较麻烦,可通过一个集中点发送命令给所有机器,快速修复故障。

3.      全局资源调整

当某集群的压力过大时,可通过调整资源来重新平衡全局的资源,保障系统的可用性。更先进的是根据系统QoS(Quality ofService)来自动平衡全局资源,所谓QoS通常是指每秒需要支撑多少的请求量,但QoS也可能是随时段不同是变化的指标。

4.      功能降级

在无法快速修改的情况下,先把系统的某些功能关闭,以保证核心系统的可用。

5.      降低对资源的使用量

如正常情况下数据库连接池最大是10个,出故障时调整为5个,同时缩短数据库连接的等待时间,又或者是在资源紧张的情况下关闭消耗资的操作

 

处理故障后,应注重分析和总结故障发生的根本原因,放入知识库,一方面是为了再碰到类似故障时能自动处理,另一方面是为了积累经验,形成更多的保障可用性的设计原则,review原则等,尽可能地避免故障再次发生。

 

6.2.4 访问量及数据量不断上涨的应对策略

对于访问量不断上涨的情况,通常应对的措施是拆分系统和水平伸缩,拆分系统后简化了各个系统的功能,并且使其拥有更多的资源,从而提升其所能支撑的用户访问量。通常系统依照功能进行拆分,例如eBey将系统拆分为交易、商品、评价等。

随着数据量的不断上涨,通常采取的是拆分数据库、拆分表及读写分离。这些技术将在下一章中详细介绍。

Spark大数据分与实践笔记(第六章 Kafka分布式发布订阅消息系统-01) 在大数据系统中,关于海量数据之间的传输方法是面临的首要困难,为了解决大数据集的传输困难,就必须要构建一个消息系统。一个消息系统负责将数据从一个应用程序传递到另外一个应用程序中,应用程序只关注数据,无需关注数据在多个应用之间是如何传递的,分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。消息系统有两种主要的消息传递模式,分别是点对点消息传递模式和发布订阅消息传递模式。... 阅读详情

相关推荐

Goose开源程序本地机上 AI 代理,能够从头到尾自动执行复杂的开发任务。Goose 不仅可以提供代码建议,还可以自主构建整个项目、编写和执行代码、调试故障、编排工作流程以及与外部 API 交互

Goose开源程序 是您的本机上 AI 代理,能够从头到尾自动执行复杂的开发任务。Goose 不仅可以提供代码建议,还可以自主构建整个项目、编写和执行代码、调试故障、编排工作流程以及与外部 API 交互。无论您是在构建想法原型、优化现有代码,还是管理复杂的工程管道,goose 都能适应您的工作流程并精确执行任务。

struggle2025的博客 2041

Java高可用架构设计-【春晚大流量高并发】

场景一 春晚大流量高并发 https://www.toutiao.com/article/7087738138654704131/?log_from=036bdb534fca5_1650254671454 前端接入CDN 在全国各地都搞一批服务器,然后呢,让CDN提前请求我们的后端系统,把一些图片、视频一类的静态资源都加载到 全国各地的CDN服务器上去。 接着呢,全国各地的用户打卡手机APP,想要加载图片和视频的时候,就近找一个距离自己最近的CDN服务器加载图片和视频就可以了,这样就可以让超高流量分散到全国

Blueeyedboy521的博客 563

从零到一:基于Blazor和Elsa Workflows的工作流系统开发实战

本文详细介绍了如何利用Blazor和Elsa Workflows构建高效的工作流系统,从技术选型到生产环境部署,涵盖动态工作流建模、Blazor前端集成及性能优化等核心内容。通过实战案例,展示如何实现订单处理系统的自动化与灵活性,提升企业流程效率。

weixin_26875109的博客 428

04 | 系统设计目标(二):系统怎样做到高可用?

04 | 系统设计目标(二):系统怎样做到高可用?

chenyong6301567的博客 465

SAP批量数据导入实战:BDC、CATT、LSMW三大工具保姆级对比教程

本文深入对比了SAP系统中三大批量数据导入工具BDC、CATT和LSMW的核心定位、适用场景与实战操作。BDC适合复杂逻辑的编程式处理,CATT适合业务用户快速录制回放,LSMW则是数据迁移项目的结构化首选。文章提供了详细的选型决策框架、性能优化技巧及常见陷阱规避指南,帮助SAP顾问和开发者高效完成数据批量维护任务。

weixin_29213525的博客 151

用Django框架+爬虫技术实现自动获取可画(Canva)团队会员资格的方法

可画(canva)是一个非常流行的在线平面设计平台,因为它无需专业训练和技能就可以利用其丰富的资源设计出美观、酷炫的作品,因而它受到了极其广泛的设计专业和非专业人群的喜爱本文介绍了一种方法,它采用Django网络框架与爬虫技术相结合,实时监控定时更新可画团队版免费邀请链接的网站页面,一旦链接有更新动作,第一时间获取相关信息,并直接加载这个有效的邀请链接,自动进入可画网站获得团队版使用资格。

hhyyqq的博客 2208

高可用是什么?高可用集群软件真能保障系统高可用吗

许多人还不清楚高可用的定义,也不知道该如何保障系统的高可用性。事实上国内已经出现了中兴新支点Newstart HA等成熟的高可用集群软件,可以保障系统高可用。下面就具体地给大家分享一下。 高可用的基本定义 高可用(High Availability)是系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 如何衡量高可用性? 可用性通常表示为一个百分比,表示在给定时间段内特定系统或组件的正常运行时间,其中100%的值表示系统永不失效。例如,在一年的时间内保证99%可用性的

weixin_47985676的博客 570

使用CubeMX生成的项目在Keil下添加DSP库并包含arm_math头文件后报错的解决办法

问题描述: 最近使用Cube生成工程后,在Keil中使用Manage Runtime Environment即绿色小饼干按钮添加CMSIS的DSP库后编译报错。很有意思的是,STM32论坛上有外国朋友报告的同样的错误,都是30个Errors,5个Warning。 问题分析: 参考国内论坛某帖子(具体想不起来了),认为因该是Cube复制了库后,Keil从原始Packs目录下引用DSP库导致和Cub...

qq_32256951的博客 7001

可用性高达五个9!支付系统高可用架构设计实战

为此,对应用的可用性程度一般衡量标准有三个9到五个9。对于一个功能和数据量不断增加的应用,要保持比较高的可用性并非易事。为了实现高可用,付钱拉从避免单点故障、保证应用自身的高可用、解决交易量增长等方面做了许多探索和实践。在不考虑外部依赖系统突发故障,如网络问题、三方支付和银行的大面积不可用等情况下,付钱拉的服务能力可达99.999%。本文重点讨论如何提高应用自身的可用性。为了...

weixin_33910137的博客 830

未隔离电源设备使用usb转串口调试导致串口模块爆炸烧坏事故记录

这个事就发生在前两天,我们公司的wifi模块被客户用到了咖啡机上,客户寄了一台整机给我们协助调试,还送了几包咖啡豆,本想着还能打个咖啡喝一喝的,但就在咖啡机刚寄过来第一天,就出事了。而这个事故的发生,竟然仅仅是因为同事接了个串口模块到电脑调试打印导致的。谁也想不到,这个3.3V的供电的wifi模块居然还有这么大的威力。直接将usb转TTL串口模块的转换芯片给爆开了,咖啡机也给弄坏了,据同事描述当时情况就只见到一片火光和一声巨响,状况比较惨烈,所幸的是笔记本电脑没有烧坏,但是直接给崩蓝屏了。 ...

fangye945a的博客 6192

HTML流光爱心(完整代码)

HTML语言实现红蓝色流光爱心效果的完整代码。

AIGC 1万+

互联网高可用架构技术实践

一、什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为

jizhunboss的专栏 987

VS Code 重大更新:Agent Skills完美支持!

代码不会骗人,但你的 LLM 可能会编个故事——除非你给它一本《技能手册》。——某位深夜调试成功的 Go 工程师。

weixin_44058951的博客 3459

读书笔记:《分布式JAVA应用 基础与实践》 第六章 构建高可用的系统

对于互联网或企业中的大型应用而言,多数要求做到 7*24 小时不间断运行。实际上要完全做到不太可能,但可尽量接近,各大网站或大型应用在总结一年的运行状况时,通常会有当年的可用性为 99.9% 这样的内容。 为实现类似的高可用,要避免系统中出现单点。 6.1 避免系统中出现单点 单点是指系统部署在单台机器上,一旦这台机器出现问题 ( 硬件损坏,网络不通等 ...

谷子 255

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

《Java 面向对象程序设计》第一章到第六章的综合复习总结

介绍计算机编程语言的发展历程,包括从机器语言、汇编语言到高级语言的演变。Java 语言的发展历史,由 Sun Microsystems 公司开发,旨在解决跨平台编程问题。Java 语言的特点:简单、面向对象、分布式、健壮、安全、体系结构中立、可移植、解释型、高性能、多线程、动态等。Java 跨平台原理:Java 程序先编译成字节码(.class 文件),然后通过 Java 虚拟机(JVM)在不同平台上运行字节码。内部类是定义在另一个类内部的类。

m0_70483433的博客 1210

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

从PAXOS到ZOOKEEPER分布式一致性原理与实践:zookeeper典型应用场景

发布者将数据发布到ZooKeeper的一个或一系列节点上,供订阅者进行数据订阅,从而实现配置信息的集中式管理和数据的动态更新。发布/订阅系统一般有两种模式,推(Push)模式和拉(Pull)模式。ZooKeeper是推拉相结合的模式,客户端向服务端注册自己需要关注的节点,一旦该节点的数据发生变更,服务端就会向对应的客户端发送Water事件通知,客户端收到这个消息通知后,需要主动到服务端获取最新的数据。全局配置信息有以下几个特征:数据量小,数据内容在运行时会动态变化,集群中各机器共享,配置一致。

2403_88996764的博客 1257

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

RocketMQ 与 Kafka 深度对垒:分布式消息引擎内核、事务金融级实战与高可用演进指南

大数据、日志审计、超高频指标采集:坚定选择Kafka。它的分段日志模型和零拷贝技术是为此量身定做的。核心订单、支付通知、金融账务、延迟任务:坚定选择RocketMQ。它的事务消息、秒级延时消息和混合存储结构能给你最稳的保障。

qq_43414012的博客 1465

《Java课程(第一章 - 第六章)复习总结》

(1)计算机编程语言发展史,Java语言发展史。(2)Java语言的特点:简单性、面向对象、分布式、健壮性、安全性、体系结构中立、可移植性、解释型、高性能、多线程、动态性。(3)Java跨平台原理:通过Java虚拟机(JVM)实现“一次编写,到处运行”。(1)内部类:在一个类内部定义的类,包括成员内部类、静态内部类、局部内部类和匿名内部类。(2)成员内部类:属于外部类的成员,可以访问外部类的成员。(3)静态内部类:属于外部类本身,不能访问外部类的非静态成员。(4)局部内部类:定义在方法内部的类。

Mmm_mmM_123_321的博客 797

愈发火爆的微服务、分布式,2020年Java程序员还学不会基本淘汰了

前言 现在互联网IT行业现状是架构师微服务、分布式愈发火爆了,所以各位程序员同事还在等什么呢,都给我学起来撒! 小编这里为大家准备了两本BATJ技术专家推荐的两本架构实战文档来分享给大家: 微服务 微服务架构的概念,现在对于大家应该都不陌生,无论使用 Apache Dubbo、还是 Spring Cloud,都可以去尝试微服务,把复杂而庞大的业务系统拆分成一些更小粒度且独立部署的 Rest 服务。 但是这个过程,具体应该怎么做?现有的条件下到底要不要做微服务?服务拆分成什么粒度才是合适的?遗留的老

求关注 784

Java Web架构篇之浅谈大型网站分布式架构

大型网站技术架构概述 图片摘自: 大型网站技术架构:摘要与读书笔记 更多: 《大型网站技术架构》——第一章 大型网站架构演化 架构模式 分层:横向切分 – 应用层、服务层、数据层 分割:纵向切分 – 业务切分 分布式: 将不同模块部署在不同的服务器上,通过远程调用协同工作。但是分布式也带来一些问题,分布式存储、分布式事务、分布式锁等 集群:集群部署提高吞吐量、可用性,涉及负载均衡、HA等技术 ...

聚沙成塔 1484
上一篇: Linux netstat命令详解
下一篇: 《分布式JAVA应用 基础与实践》 第七章 构建可伸缩的系统
kobejayandy
博客等级 码龄18年 2853粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值