在淘宝我学到了什么?


  暑假自己在小公司实习的时候抱怨“公司如果不能给我学习的机会,我就是来做苦力的”,可入今来淘宝已经两个月了,我学到了什么呢?是编程知识的提高,还是业务知识的积累,还是工作思想的沉淀?

   关于这个问题我真的不敢去思考,因为我知道自己在堕落,整天像一只无头的苍蝇,跌跌撞撞,迷迷糊糊。起初不懂业务和基本的技术,所以就每天话大部分时间去学习那些淘宝独有的技术,每天晚上的日报也就是回报自己学习技术的饿进展情况,如今,自己单独负责一个项目的时候,每天晚上写日报的时间就成了我最痛苦的事了,因为白天一直处于浑噩状态,时间就从指间悄然划过,到了晚上在日报中就不知道有什么可以汇报的了。看着日期离自己转正面试的时间一步一步接近了,自己所掌握的东西却微乎其微,心里难免有一丝的恐惧。自己这样的生活不能再像这样地持续下去了,再没有自己的思想,只能跟淘宝说再见了。

   我学到了什么?这个问题虽然不敢去思考,但是我深知不得不去思考,不去思考,就是等死。回想一下这两个月我主要做了呢?技术上:首先是使用ruby语言实现自动化脚本的书写。其次是itest接口测试,再次是Hadoop、Hbase相关知识,这些是技术层面的;测试流程上:熟悉了一般的测试流程,测试方法,对测试工具的使用还是一个未知领域,正对淘宝的测试思想我会专门写一篇文档来总结自己的思想的。综合能力上:1.文档的构建过程。在淘宝我看到了大家对文档的重视程度,无论你做再小的日常都是要沉淀文档的,还有就是当你新知识之后就要跟大家做一次分享,这会促使你去深入思考自己所学的内容,对自己的表达能力也是一种很好的锻炼。写文档前先构建文档的框架,理清除自己的思路之后然后像填砖一样朝里面填写内容就可以了,无论何时思考问题都要思路清晰,讲出来也要有条理性,写出优秀的文档就是一项基本功。2.无论何时都不忘多思考。这个为什么要这样做,这样做有什么好处,有没有跟好的解决办法?学习和做事的时候要时常拷问自己。3.有自己的思想。这个也是淘宝中最重视的一个,你的技术可以稍次一些,但是对任何事情要有自己的看法,自己的想法,不能做一个人云亦云的人。4.关注自己所在行业的前沿信息。你可以不知道具体细节,但是大概的内容我们还是要了解的,而且能有自己的评论。5.充分利用身边的资源。现在那种整天只会埋头苦干的人大公司基本上是不需要了,于其这样,公司还不如多配置两台高端一点的机器,何必去花费代价巨大的人力资源呢。遇到问题时我们要大胆请教身边的前辈,这是一天熟悉知识的捷径之路。其次,与身边的人交流还可以加强同事之间的友好关系。6.遇到问题了不要在哪里苦苦查找,及时跑出来,寻求他人的帮助,这样可以极大提高你的工作效率。

待续….

**TDDL(Taobao Distributed Data Layer)** 是淘宝开发的一款**分布式数据库访问中间件**,用于解决数据库在高并发、大数据量场景下的访问瓶颈。它主要提供**分库分表、读写分离、动态数据源路由**等功能,是淘宝早期架构中用于支撑海量数据访问的核心组件之一。 --- ## 一、TDDL 是什么? TDDL 是一个**基于 Java 的数据库访问层框架**,它位于应用程序和数据库之间,对数据库访问进行统一的路由、分发和管理。其本质是一个**数据库中间件**,并不直接存储数据,而是对 SQL 请求进行处理和路由。 ### 主要功能包括: 1. **分库分表(Sharding)** 2. **读写分离(Read/Write Splitting)** 3. **动态数据源切换** 4. **SQL 路由与合并** 5. **故障转移与负载均衡** --- ## 二、TDDL 的核心架构 TDDL 的架构可以分为以下几个层级: ### 1. **ConfigServer** - 配置中心,用于管理数据库的分库分表规则、读写权重、数据源信息等。 - 使用 Diamond(淘宝自研配置中心)或 Zookeeper 存储配置信息。 ### 2. **TDDL-Engine** - 核心模块,负责接收 SQL 请求,进行 SQL 解析、路由、执行和结果合并。 - 支持将一个 SQL 拆分为多个子 SQL,分别发送到不同的数据库分片执行。 ### 3. **Group** - 每个 Group 对应一个数据库分组(如 user_db_0, user_db_1)。 - 每个 Group 下可以有多个物理数据库实例(主库、从库)。 ### 4. **Atom** - 最底层的数据库连接池,封装了对单个数据库实例的连接管理。 --- ## 三、TDDL 在淘宝架构中的作用 ### 1. **分库分表** - 当数据量达到单库瓶颈时,TDDL 可以将数据水平拆分到多个数据库中。 - 支持按用户 ID、订单 ID 等字段进行哈希或范围分片。 ```java // 示例:TDDL 分库分表逻辑(伪代码) TDDLDataSource ds = new TDDLDataSource("user_db_group"); Connection conn = ds.getConnection(); PreparedStatement ps = conn.prepareStatement("SELECT * FROM user WHERE id = ?"); ps.setLong(1, userId); ResultSet rs = ps.executeQuery(); ``` ### 2. **读写分离** - 自动将读操作路由到从库,写操作路由到主库,提升数据库性能。 ```properties # 配置示例(伪配置) group.user_db_group.master=master_db group.user_db_group.slaves=slave1,slave2 group.user_db_group.strategy=round_robin ``` ### 3. **动态数据源切换** - 支持根据业务逻辑动态切换数据库实例,比如: - 多租户架构下按租户 ID 切换数据源 - 数据迁移、灰度发布时切换数据库 ### 4. **容错与负载均衡** - 当某个数据库实例不可用时,自动切换到其他实例。 - 支持多种负载均衡策略(如轮询、权重、最少连接等)。 --- ## 四、TDDL 与 MyCat、ShardingSphere 的对比 | 功能 | TDDL | MyCat | ShardingSphere | |------|------|-------|----------------| | 开发语言 | Java | Java | Java | | 是否中间件 | 否(客户端) | 是(独立服务) | 是(客户端 + 服务端) | | 分库分表支持 | ✅ | ✅ | ✅ | | 读写分离支持 | ✅ | ✅ | ✅ | | 配置中心 | Diamond / Zookeeper | 自带配置 | 可集成 Nacos、Zookeeper | | 社区活跃度 | 内部使用为主 | 一般 | 高(Apache 顶级项目) | --- ## 五、TDDL 的优缺点 ### ✅ 优点: - 与淘宝业务高度集成,性能优秀 - 支持灵活的分库分表策略 - 读写分离、动态路由能力强 - 与 Diamond、Notify 等组件无缝集成 ### ❌ 缺点: - 开源版本较老,社区支持有限 - 配置复杂,学习成本高 - 依赖淘宝内部组件(如 Diamond),难以直接用于外部项目 --- ## 六、总结 | 项目 | 内容 | |------|------| | TDDL 全称 | Taobao Distributed Data Layer | | 用途 | 分布式数据库访问中间件 | | 核心功能 | 分库分表、读写分离、动态数据源 | | 优势 | 高性能、高可用、灵活扩展 | | 应用场景 | 高并发、大数据量的电商、金融系统 | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值