学Java分布式和高架构,必懂的两大知识点!

今天小编为你们分享阿里巴巴2018年招聘应届毕业生,Java工程师的面试考题,主要分为三种 Java中获取 mysql连接的方式:

第一部分:分布式

三步变成:分布式

1、将你的整个软件视为一个系统(不管它有多复杂)

2、将整个系统分割为一系列的 Process(进程), 每个 Process 完成一定的功能

3、将这些 Process 分散到不同的机器上。分散后,选择若干种(没错一种可能不够)通信协议把他们连接起来

端正认识:分布式不等于并行计算

分布式系统和并行计算一定可以并行吗?实际上并不一定,这是很多人在认识上的误区。举个简单的例子:

某软件,功能如下:

1、提示用户输入两个数 A 和 B

2、在内部,对 A 和 B 执行某数学运算,获得 C

3、输出 C

这个三个步骤是无法并行的,需要依次执行。

认识本质:拆分+链接是分布式系统的本质

所谓分布式,无非就是”将一个系统拆分成多个子系统并散布到不同设备“的过程而已。

本质上而言,实现一个分布式系统,最核心的部分无非有两点:

如何拆分——可以有很多方式,核心依据一是业务需求,二是成本限制。这是实践中构建分布式系统时最主要的设计依据。

如何连接——光把系统拆开成 Process 还不够,关键是拆开后的 Process 之间还要能通信,因此涉及通信协议设计的问题,需要考虑的因素很多,好消息是这部分其实成熟方案很多。

分布式的作用

1、扩展性能。系统负载高,单台机器无法承载,希望通过多台机器来提高系统地负载能力,这个时候分布式就可以发挥作用了。

2、增强可靠性。软件,网络,机器随时都可能会出错,为了避免故障,需要将业务分散开。增强可靠性。

实现分布不难,难的在于如何选择正确分布方案

通常会有很多种分布方案摆在你面前,为了正确解决问题,你需要对每一种方案进行了解,评估,从而选择最大程度符合需求的方案。比如你对数据的一致性要求很高,就不得不容忍一些其他缺陷,如规模伸缩困难等,如果你放弃数据高一致性,就可以避免其他缺陷,而承担数据不一致带来的风险。选择不同的方案,有时对整个系统影响不大,有时会影响系统其他部分的工作方式甚至用户界面中用户操作的流程。

分布式入门学习要点

分布式入门学习主要包括以下知识点:

1、Process(进程)。进程是分布式系统中的基本单元。

2、通信协议。进程间需要配合来完成工作,所以通信协议就成为了最基本要解决的问题。这部分涉及面很广,但是核心就有两点:一是存在哪些需求;二是各协议如何满足这些需求;

3、协作。为什么要通信?因为要协作,协作最基本的问题是同步问题,而聊同步问题就会聊到“锁”,这里又包括了锁的实现,加锁,解锁等问题,这里就不一一展开了;

4、命名法。通信当然需要有名字称呼,就像人和人之间的交流一样,所以进程需要有名字,可以是数字,也可以是结构化的符串;

以上几点是最基础的知识,了解了这些就算入门了,如果要进阶,就需要接着了解下面的知识点:

1、一致性。数据存储时最基本的问题。

2、容错。冗余是容错的基础,但并不是全部,分布式本身为实现容错提供了一些便利,这也是设计系统时常常需要考虑的问题。

分布式学习书单

1、《大型分布式网站架构设计与实践》

2、《大型网站技术架构:核心原理与案例分析》

3、《大型网站系统与Java中间件实践》

4、《分布式Java应用:基础与实践》

5、《分布式Java应用:基础与实践》

几个Java分布式缓存框架

1、Ehcache – Java分布式缓存框架

Ehcache是一个Java实现的开源分布式缓存框架,EhCache 可以有效地减轻数据库的负载,可以让数据保存在不同服务器的内存中,在需要数据的时候可以快速存取。

2、Cacheonix – 高性能Java分布式缓存系统

Cacheonix同样也是一个基于Java的分布式集群缓存系统,它同样可以帮助你实现分布式缓存的部署。

3、ASimpleCache – 轻量级Android缓存框架

ASimpleCache是一款基于Android的轻量级缓存框架,它只有一个Java文件,ASimpleCache基本可以缓存常用的Android对象,包括普通字符串、JSON对象、经过序列化的Java对象、字节数组等。

4、JBoss Cache – 基于事物的Java缓存框架

JBoss Cache是一款基于Java的事务处理缓存系统,它的目标是构建一个以Java框架为基础的集群解决方案,可以是服务器应用,也可以是Java SE应用。

5、Voldemort – 基于键-值(key-value)的缓存框架

Voldemort是一款基于Java开发的分布式键-值缓存系统,像JBossCache一样,Voldemort同样支持多台服务器之间的缓存同步,以增强系统的可靠性和读取性能。

第二部分:高架构

1. 工程化专题

(团队大于3个人之后,你需要去考虑团队合作,科学管理)

2. 源码分析专题

(好的程序员,一行代码一个设计就能看出来,源码分析带你品味代码,感受架构)

3.高性能及分布式专

(跟上技术节奏,扩宽技术视野,程序员要往上提升,要有自己的技术工具箱和技术认知。)

4.技术架构专题

(真实案例分享,带你领略大型项目风采)

5.性能调优

(追求高效、科学调优,不靠碰运气)

记住:学习永远是自己的事情,你不学时间也不会多,你学了有时候却能够使用自己学到的知识换得更多自由自在的美好时光!时间是生命的基本组成部分,也是万物存在的根本尺度,我们的时间在那里我们的生活就在那里!我们价值也将在那里提升或消弭!

Java程序员,加油吧!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一名叫大蕉的程序员

分布式架构的套路No.74

今天小蕉跟大伙一起聊聊分布式系统的架构的套路。在开始说套路之前,大家先思考一个问题,为什么要进行分布式架构? 大多数的开发者大多数的系统可能从来没接触过分布式...

1887
来自专栏四蛋科技

驱动大数据的技术发展

据估计,每天会创建2.5百万兆字节的数据,我们需要将这些前所未有的大量数据妥善储存以便日后访问以及对其进行分析。这些数据量大到需要使用鲜为人知的单位来衡量,如Z...

2354
来自专栏Linyb极客之路

初识分布式架构

集群 小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是集群。

761
来自专栏Java技术

漫谈分布式架构的几种套路

今天小蕉跟大伙一起聊聊分布式系统的架构的套路。在开始说套路之前,大家先思考一个问题,为什么要进行分布式架构?

601
来自专栏性能与架构

Facebook 迁移 Messenger 底层存储的过程

Facebook Messenger 用户超10亿,可以即时分享文字、图片、视频,产品自身不断的发展,背后的系统也在不断改变,开始是一个单体服务,后来变为有专门...

511
来自专栏PingCAP的专栏

TiKV 在饿了么的大规模应用实践

饿了么从 2008 年创建以来,一直都是飞速的发展。目前,饿了么已覆盖了 2000 多个城市,拥有 2.6 亿的用户,130 万的商户,300万的骑手。饿了么在...

47414
来自专栏windealli

后台开发必备知识——容灾

后台开发的目标是要提供高可用的后台服务,其中很重要的一点是保证业务连续性(服务不中断,或中断时间在允许范围内)。

2534
来自专栏PingCAP的专栏

TiDB 在卡思数据视频大数据业务中的实践

卡思数据是国内领先的视频全网数据开放平台,依托领先的数据挖掘与分析能力,为视频内容创作者在节目创作和用户运营方面提供数据支持,为广告主的广告投放提供数据参考和效...

1072
来自专栏H2Cloud

C++ FFLIB之ffcount:通用数据分析系统

摘要: 数据分析已经变得不可或缺,几乎每个公司都依赖数据分析进行决策。在我从事的网游领域,数据分析是策划新功能、优化游戏体验最重要的手段之一。网游领域的数据分析...

3436
来自专栏PPV课数据科学社区

【学习】百万级别数据,数据库Mysql,Mongodb,Hbase如何选择?

情况说明: 现在需要做一个数据存储,500w左右的数据,日后每天大约产生5w条左右的数据。想把这些数据存储起来,供日后的数据分析用?使用上面说的三种数据库中的哪...

4218

扫码关注云+社区