对于架构师而言,技术的发展是无尽的,在搭建和实践智能数据架构的过程当中,架构师们都会或多或少地遇到一些疑惑和挑战,如何解决在架构建设中遇到的某些问题?架构建设的领域又有什么新的行业动态和技术方法?数据库
近日,在个推TechDay全国沙龙北京站的现场,几位资深架构师围绕“以智能数据架构,挖掘增加金矿”的主题,开启了对智能数据技术的深刻探讨。编程
贝壳金服2B2C CTO 性能优化
在传统的IT行业中,企业级业务系统是技术水平的高峰,好比电信、金融、税务系统。以电信行业为例,它有其独有的行业特征:业务系统自己就是生产系统,信息化程度高;24小时全天候跨地域不间断地提供服务;业务复杂,功能多样等。电信行业中以中国移动为表明的架构设计规划最为领先,该架构有一套完整的设计规范,总体建设周期也很长。网络
而在PC互联网时代,电子商务纷纷崛起,不少互联网电商平台都面临着从自营到平台化转变的挑战。自营与平台化最大的区别在于,自营只有一个商户,而真正的平台则须要像云计算同样,支持多商户的入驻与经营。对于架构师来讲,要实现这样的平台转型,须要有清晰的业务系统架构总图、系统架构蓝图以及技术架构规划。架构
进入到移动互联网时代,手机的普及使得O2O快速发展。O2O平台对于系统稳定性的要求很是高,并且对业务发展的响应速度也提出了新的 ,其所须要的技术架构很是复杂、须要有严谨的基础架构和运维机制,还要维持创新能力。并发
到了产业互联网时代,架构师应该对行业有更深刻的理解和实践,同时,也要有相应的架构思惟,从“点、线、面、体”各维度提高认知,在进行架构建设时,架构师不只要考虑到技术上实现的可能性,也要考虑到行业特色,以及企业各个方面对于互联网技术的态度与需求。负载均衡
个推平台架构主管框架
微服务是指,将单一的应用程序拆分红多个微小的服务,各个小服务之间低耦合,高内聚,每一个小的服务能够单独进行开发,不依赖于具体的编程语言,也可使用不一样的数据存储技术,各个服务能够独立部署,拥有各自的进程,相互之间经过轻量化的机制进行通讯,全部的服务共同实现具体的业务功能。运维
个推总体的微服务架构,主要是基于Docker和Kubernetes进行实践的。个推将应用服务分为三层,最上层是API网关,为服务提供统一的入口;第二层是业务逻辑层,主要实现具体的业务逻辑;最底层是基础服务层,为同一产品线下的不一样产品提供共同的基础服务。异步
在构建整个微服务体系时,个推选择了研发本身的网关。目前市面也有不少优秀的网关产品,但都并非特别适合个推的微服务体系。
第一,个推的配置和服务注册与发现均基于Consul实现的;
第二,不少的开源的网关的配置相对于个推的需求略显复杂;
第三,因为不一样的功能很难用统一的网关去实现,个推更但愿在API网关的功能扩展上保持足够的灵活性;
第四,个推的微服务体系是基于Docker和Kubernetes进行实践的,其余的网关较难直接融入个推的微服务体系。
个推选取了OpenResty+Lua做为实现网关的技术选型。其中,OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,Lua则是一个较为轻量的、扩展性较强的语言。同时,个推也借鉴了Kong和Orange的插件机制,经过插件的方式实现网关功能的扩展。
个推的微服务网关的设计重点,体如今插件的设计和请求过程,每一个插件都会在OpenResty的一个或多个阶段起做用。在进行请求处理的时候,个推会按照产品配置和插件规则筛选出具体执行的插件,而后实例化插件,对流量进行处理。个推微服务网关还有规则配置简单,不一样插件实现灵活,配置基于Conusl实时热更新等特色。在本身的微服务网关中,个推还实现了诸如动态路由、流量控制、Auth鉴权、链路追踪、A/B Testing等功能。
在实践微服务网关的过程当中,个推还有一些有待改进的地方,好比:网关的弹性设计不够、网关还须要进一步与DevOps进行结合等。
百度主任架构师
搜索引擎的建设主要分为三个方面,第一,是内容抓取部分,爬虫会将海量信息抓取下来;第二,是检索系统部分,系统须要加入对已抓取信息的内容的理解,放到索引中;第三,是索引构建部分。
支持搜索引擎计算的建库部分中,有一个很是核心的系统:Tera,它是一个大型分布式表格存储系统,能够进行高性能、可伸缩的半结构化存储,同时支持存储万亿量级的超链和网页信息。Tera系统有八个核心技术:
一、数据模型的全局有序;
二、实时的读写和区间扫描(这一点与数据模型的全局有序也密不可分);
三、能够支持行式存储和列式存储;
四、友好的分布式文件系统;
五、利用SSD cache热数据;
六、数据压缩,异步IO和分组提交等性能优化手段;
七、支持秒级分裂合并,而且可以实现自动负载均衡;
八、在分布式数据库上实现了分布式事务。
Tera是百度搜索引擎从批量处理迈向实时流式计算的最基础的架构,它能够提供实时的读写能力,同时提供海量存储和增量计算,而且节约增量成本。在研发方面,Tare也可以使中间数据可见、Debug能力加强。
本质上来讲,Tera是一个分布式存储系统,它须要遵循分布式存储系统的设计要素,包括:明确数据模型、存储引擎的设计、数据分片的方式、如何管理元数据、高可用的设计以及应用的是分层式仍是竖井式的存储。同时,存储系统也须要进行性能优化工程的实践,包括指标数据的采集和可视化、先作profiling再手动优化、面向SSD进行编程、Batch&pipeline&asynchronous和学习存储引擎的先进研究成果。
京东数科高级DBA
互联网应用业务的特色是用户和数据量大、产品迭代迅速、业务组合复杂、突发性流量暴增以及7*24小时不间断提供服务,这些特色致使互联网架构从一开始的单体式架构发展到分布式微服务,再到云原生架构。分布式微服务使得系统解耦可用性获得提高,而云原生架构更好地实现了资源按需伸缩、自动化的部署和管理。同时,互联网数据库也在不断地升级,因为早期的RDBMS没法知足数据扩展的需求,NoSQL应运而生。再到后来,囊括分布式数据库、分布式数据库中间件以及云数据库的NewSQL也都纷纷顺应数据扩展的需求而产生。
做为分布式数据库的中间件,Sharding-Sphere能够借助底层成熟的关系型数据库进行增量持续的开发,这知足了分布式的需求,而且可以大大下降运维和接入成本。
同时,Sharding-Sphere也应该拥有四种核心能力:
一、可以经过数据拆分或读写分离,实现数据分片的能力。具体来说,数据分片须要先经过SQL解析,对查询语句进行优化、合并和改写,再找到能够执行的SQL,最终实现结果归并。
二、分布式事务可以保证数据的一致性。在数据还未打散以前,咱们能够用传统的ACID(Atomicity、Consistency、Isolation、Durability)保障数据的一致性;但在数据被打散以后,咱们则须要引进新的BASE原则(Basically Available、Soft state、Eventual consistency)来保障数据一致。有两种方式能够实现分布式事务BASE:一种为XA,虽然XA支持回滚,可以达到强一致性,但当并发量变大,它的性能会急剧下滑;而另外一种方式是柔性事务,在这种方式下,当业务量急剧上升时,并发性能只会发生略微衰退,而且可以保证,在最终达到一致。
三、数据库治理。Sharding-Sphere能够经过注册中心的操做,实现统一管理、熔断或失效转移的功能,同时能够经过拓扑图和调用链来打造APM监控。
四、弹性伸缩。Sharding-Sphere是由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar这3款相互独立的产品组成的,他们均提供标准化的数据分片、分布式事务和数据库治理功能。Sharding-JDBC更适用于单体应用和分布式微服务,它是一个轻量级的Java框架;Sharding-Proxy实现了MySQL的二进制协议,而且不存储任何数据;Sharding-Sidecar的核心是Service Mesh Sidecar,可以帮助本地的应用层与网络节点进行沟通。