互联网架构体系讲座随堂笔记

讲座主要内容


淘宝典型的架构应用

顶层load balance,业务分发
二层应用层,各类繁多的应用app
三层服务层SOA,使用多种中间件
四层存储层,MySQL Hbase Oceanbase, TFS
五层分析层,一些日志文件,数据备份,做数据挖掘,分析
侧面对每一层都有安全审计和监控管理。


CAP理论

a) 一致性 C 
b) 可用性 A
c) 分区容忍性 P
最终一致性
举例:大v的微博消息,不需要粉丝在同一时刻都能看到。PUSH和PULL的策略,对活跃粉丝PUSH 对僵尸粉,等待刷时去PULL。
CAP的补充说明:整个机房掉电,这种可能1年只有1,2次,但对于大规模的集群而言,硬盘故障每天都有几十几百例,故障是必然存在的,可用性怎么保证?通过各个备份。


存储

淘宝的存储采用以下几种:
关系型数据库:MySQL,适用一些在线业务
NoSQL数据库:Hbase,Oceanbase,适用一些历史订单数据查询
分布式文件系统:TFS,零碎小文件分布式存储


举例谈及,淘宝的在线业务目前基本都是基于MySQL的,原先在oracle上的业务也都已经同步迁移到mysql数据库上了。以商品库,订单中心为例,迁移时间高达半年。


订单系统的历史数据(如三个月之前的数据),这种不太频繁被查询的数据,将其存放到支持容量更大的Hba<x>se数据库中,三个月之内的数据存放在mysql当中。经过对mysql的优化,可支持单表上亿条记录的查询性能。



MySQL
InnoDB存储引使用SSD擎
支持事务、行级锁、优化支持单表上亿条记录查询。


扩展方法
Scale up : 加内存,提高IOPS(换SSD,或PCIe Flash)

Scale out : 读写分离、sharding分库分表


Hbase
高性能写入、读性能也不错。
动态增加列。支持行级事务。(MangoDB不支持行级事务,库级)
应用案例:
在线:历史订单
离线:日志中心,Dump中心,消息


Oceanbase
可扩展的关系数据库,开源
支持跨行跨表事务,支持数千亿记录,数据百TB数量级的SQL查询
应用案例
宝贝收藏
直通车卖家报表
天猫评价


TFS
淘宝的分布式文件系统
案例:
交易快照、商品图片、SNS头像等图片。


缓存层
为缓解数据库存储上的压力,都会使用一层内存做缓存,承担大部分的查询任务。
缓存层淘宝使用的有TAIR,memcache,redis,LevelDB(google)。


中间件
中间件有多种,RPC中间件、数据库是间件、消息中间件。
RPC中间件
服务的远程调用实现像在本地一样执行。几种实现方法:
1. TCP/IP长连接
2. 序列化/反序列化. JAVA Hessian,PB(Google)
3. 同步、异步调用、oneway、callback、可靠异步调用
软负载
配置中心
版本控制
可用性保证
故障检测、心跳检测、超时处理、功能降级(实例:广告大图变小图,减少后台压力,但减少了点击量)


举个实例:

淘宝调用支付宝。调用过程如下:
淘宝订单提交通过支付宝接口,发起远程调用,异步调用,淘宝直接返回。支付宝收到调用消息后,执行任务,完成后,通过消息中间件回调通知淘宝端。淘宝收到回调请求后继续处理剩余任务。完成配合。


配置中心功能:
当服务提供者发现故障时,怎么自动实现服务切换,以不影响业务呢?答案是心跳。服务提供者与配置中心有心跳信息,当配置中心认定某服务提供者挂掉时,会向集群广播,然后按照规则,将消息转发到存活的服务提供者去。
比如:刷新一个页面,半天不响应,但如何30s后再刷一次可能就正确加载了。


消息中间件
Notify
metaQ (RabbitQ)
TimeTunnel


数据库中间件
对应用层屏敝分库分表
使用规则引擎动态计算路由,选择正确的表
依赖于配置文件里的规则改变,可以在不重启情况下,改变数据库行为。

本项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架和Vue.js前端技术的大学生第二课堂系统,旨在为大学生提供一个便捷、高效的学习和实践平台。项目包含了完整的数据库设计、后端Java代码实现以及前端Vue.js页面展示,适合计算机相关专业的毕设学生和需要进行项目实战练习的Java学习者。 在功能方面,系统主要实现了以下几个模块:用户管理、课程管理、活动管理、成绩管理和通知公告。用户管理模块支持学生和教师的注册、登录及权限管理;课程管理模块允许教师上传课程资料、设置课程时间,并由学生进行选课;活动管理模块提供了活动发布、报名和签到功能,鼓励学生参与课外实践活动;成绩管理模块则用于记录和查询学生的课程成绩和活动参与情况;通知公告模块则实时发布学校或班级的最新通知和公告。 技术实现上,后端采用SSM框架进行开发,Spring负责业务逻辑层,SpringMVC处理Web请求,MyBatis进行数据库操作,确保了系统的稳定性和扩展性。前端则使用Vue.js框架,结合Axios进行数据请求,实现了前后端分离,提升了用户体验和开发效率。 该项目不仅提供了完整的源代码和相关文档,还包括了详细的数据库设计文档和项目部署指南,为学习和实践提供了便利。对于基础较好的学习者,可以根据自己的需求在此基础上进行功能扩展和优化,进一步提升自己的技术水平和项目实战能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值