没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
2021/9/13
不讲的东西 RMI:Java 的远程方法调用、包括 Java security
controller 在服务多个客户的时候创建几个?Serveice 呢?开发的任务到底是有状态还是无
状态的?Controller 和 service 是怎么交互的?我们默认它们在一个 tomcat 进程中通信,那么
如果在两个 Tomcat 进程中呢?赶上双十一的时候,大量请求过来怎么样先把订单收下来之
后再去处理呢?默认:Tomcat 中支持 AMS,当然也可以用消息中间件 kaflka 先收下订单,
然后之后再去处理。我们只是先告诉客户收到了,结果让客户之后再去看。(异步通信)
3. 现在都是 http 包括 ajax 和 html,后端产生一个响应,是页面 or 请求。但是后端不会主
动给你,后端要主动推送的情况下,需要 websocket,可以广播,也可以点对点。
4. 谈谈多线程,这个相对比较独立,在学 OS 的时候里面也会有多线程,但是都是 C++/C
在写程序。Java 中的多线程理论上肯定是符合 OS 中学到的多线程的机制,比如生产者/消费
者,上锁/还锁,这一套机制怎么拿 Java 来写。
5. 下成功了两个订单,但是只有一本书/当电子书城支持支付的时候,需要到支付的地方把
它的钱扣掉,再生成订单,这两个操作必须同时完成,以一个原子性的方式执行(要么都执
行,要么都不执行),这就是事务管理,在 Java 中事务的边界的划分是以 annotation 标注
的方式来实现的,不同的 annotation 标注在相同的代码上,行为是不一样的。我们只需要学
会怎么利用它来实现这个功能。Mysql 自带了缓存,加载硬盘的东西的时候其实也放到了它
的缓存里,那么我们为什么还需要分布式缓存呢?1.Mysql 的缓存在 Mysql 里,程序在 Tomcat
里,如果要去拿 Mysql 的缓存,这是一个进程间通信,开销比较大,如果能把这个缓存放到
自己这里来,会更快。2.Mysql 的缓存不受我们的控制,没有办法指定数据缓存。3.在对象
里可能只有一部分数据来自 Mysql,另一部分在 MongoDB 中,需要我们在受控的内存中把
它缓存住。缓存要解决的是不要频繁地读取硬盘,问题就是在分布式的环境中如何高效的存
储对象。
6. 全文搜索,是标题中有 911 还是书的简介中有 911。这该怎么办呢?直接遍历效率肯定
不高,我们可以把简介通过中文断词断开,然后做一个索引。Eg:”中国”,”美国”,”911”。将来
就可以直接通过索引来找到。
7. 和支付宝对接服务,写完的东西都可以与我交互,需要找到一个共同的语言进行交互。
比如 Json,Xml。有了 web 服务后,需要部署一整个程序吗,可以按照一个独立的功能进行
部署吗?也就是系统要变成微服务的架构。它和服务访问网关、函数式编程是关联起来的。
8. 然后讲讲安全管理,上学期的大作业中,我们做了用户名和密码登录,在传输过程中的
网络设备上做了监听,马上就能知道密码是什么。那就需要用到 SSL(安全套接字),它是
基于证书这个体系的,SSL 是怎么加到 HTTPS 上配置出来使用的。讲了这些东西以后就会发
现,前端给用户展示的东西没有发生变化,但是可靠性安全性就会提高。
9. 第二块我们谈谈数据库的设计,在范式的基础上,从性能、可靠性的角度去考虑,光用
Mysql 的时候,它最多支持几个表,一个表里最多有几个字段?怎么设计主键来让性能更
高?到底建单列的索引还是多列的复合索引?Mysql 的缓存开多大?怎么开?怎么控制参
数?
10. 数据库的备份和恢复,比如从 checkpoint 拿出来再把操作做一遍。书店订单一下子就爆
炸的情况,就不能放在一张表里,逻辑上是一张表,但是物理上要做分区,分到多台机器上
去存储。怎么保证分到多台机器上又保证效率不太低?
11. Nosql 的问题,MongoDB,在 它 眼 里 的 数 据 不 像 Mysql 一样有严格的表结构,在 MongoDB
中是 Collection,要求表里的记录不一定要有相同的字段,但是大家可以组织到一张表里。
它也不存在表间关联,所以分区容易实现。
12. 图数据库,最简单的就是社交网络中的数据,如果用关系型数据库去存,如果要查询好
友的好友的好友,就要多次 join 拉低性能,但是在图数据库中就非常容易。我们也可以在社
交网站中找到热点人物,比如用图神经网络。
13. 日志结构数据库,代表就是 RocksDB,就是在大家设计的电子书店中,十年前的订单和
现在的订单存在一起,在搜索的时候没有根据时间有相应的优化,我们希望搜最近订单更快
一点。这就像日志数据一样,最往前的日志数据越不容易被读取。这 就 适 合 存 储 随 着 时 间 推
移访问频率越来越少的数据类型。
14. 数据库的第三块:云数据库,用啥呢,那就是华为的 OpenGauss 等。我们要谈一下云数
据库的特点,基于云数据库开发云原生的系统应该是怎么样开发的。这三个内容就是我们的
第二个数据库相关的单元。
15. 集群部署,怎么在两台机器上跑。用 nginx 进行集群部署。第二块就是云计算和边缘计
算,云计算本质上就是有很多机器,屏蔽掉其管理的复杂性。我们不需要考虑在哪个物理机
上运行,我们感受不到物理服务器如果崩了以后数据的自动迁移。边缘计算也就是物计算,
也就是散布在你周围的边缘设备来解决问题。Eg:怎 么 通 过 高 清 摄 像 头 找 到 在 楼 中 走 丢 的 小
孩。如果每个摄像头都带有一定的处理能力,根据得到的图片来计算自己看到的场景中有没
有小孩。
16. 第三个就是容器,也就是 Docker,开发微服务的时候,它不是一个完整的应用,不应该
为了一个微服务就跑一个虚拟机。换句话说,多个微服务可以共用容器化的环境,把对系统
的调用统一起来变成一份。
17. 在 docker 中运行的新问题,十个微服务都在 docker 中,完成下订单需要 a 服务调用 b
服务调用 c 服务,这些 docker 容器到底在哪个机器上。这该怎么管呢,可以用 k8s 来管理。
18. 再往下,是第四个单元,分布式并行处理的框架,数据大到一定程度的时候,处理起来
就会比较困难。在集群中,我们让每个机器各做一部分事情。
19. 把所有操作在内存中去做 Spark(scala 语言,其包含面向对象编程和函数式编程),scala
的程序是 java 程序的 1/6 长。它不去频繁读写硬盘,而放到了内存里。
20. 数据源源不断地过来,流式数据过来怎么办呢?Twitter 就是 storm 的的流处理方案。这
些数据存在哪呢?1.收数据全部分布式存储,需要有一个分布式的文件系统,文件全部切成
小块存在不同的机器上。所以 Nosql 数据库一部分要放在这里,大部分都是 HBase。
21. Hive 数据仓库,对大数据进行分析,可以使用 Kettle 和 Kylin,我们最后谈一谈开发的东
西应该以怎么样的方式暴露出去。
考核
大概有 12 次作业,每次作业都 5 分。
期末考试 主观题 20 个,一个题 5 分,开卷(但没意义)。举个例子,RML 考过啥,RML
考了同一台机器上跑了两个 tomcat 一个下单 一个通知下单成功,需不需要通过 RML 协议
实现。其实考察基本概念,在安全认证的时候有三种东西 code base,url, priciple 访问,
这三类有什么区别。只要作业是自己写的就没问题。不会让你写代码,不要写很多字。
今天要谈应用程序是怎么样演化到现在这样的样子的。
这是大二我们做的程序。
别人要访问到你,这台机器要有公网 ip,数据库也会在公网上暴露(比如防火墙忘记设
置,并且默认密码没改)
应该把数据库分配一个内网 ip,外网不能直接访问。不是说这三台机器构成了分布式系
统,其实上面的单体也是分布式系统,只是分布在了不同的进程中。在上例中,三台主机可
能使用不同的时间。时间很难一致,需要像手机一样统一授时。
考虑到数据库比较大,缓存可能不止一个机器,构成一个分布式缓存,应用服务器大量地访
问这个缓存,性能就会高很多。在这个基础上,本地再搞一个本地缓存。这样就构成了一个
分级缓存系统。本地缓存可以使用最近最少策略。
双十一到了,大量订单来,一台机子扛不住搞了三台机器,需要提供负载均衡器来分发请求
到不同的应用服务器上
此时数据库成为瓶颈,一个数据库不行了,我们需要对数据库做主从备份,写主数据库,同
步到从数据库,如果主数据库崩了就可以使用从数据库。在主从备份的情况下,从数据库还
要承担一部分读数据库的操作。这样数据库也变成了集群
负载均衡器接收到请求分发,如果这个网站有大量的视频,光靠这些服务器是扛不住的,比
如爱奇艺都是有一个 CDN(内容分发网络),它在全国骨干城市建了很多节点,用光纤连起
来。如果用户在上海附近,那么 CDN 会调度到上海节点。事实上是我们有一个视频,也不
是上海和北京的视频完全一样。比如视频数据原先存在纽约,中国不一定有很多人看。上海
看的人逐渐多的情况下,才会在上海也放一份。反向代理是访问 CDN 网络中的某一个节点,
我们也不知道具体是哪里。对我们看到的只是这一个地址。这样我们把大的视频和音频放在
CDN 中,而结构化的数据就可以放在我们自己的数据库服务器中。
其实我们访问的数据,无论是在 CDN,分布式文件服务器,只是位置不一样,格式不一样。
我们可以搞一个 DAO(统一数据访问网关)对应用程序来说只是 getbook,getaudio,getimage,
剩余177页未读,继续阅读
胡说先森
- 粉丝: 54
- 资源: 280
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0