vitess

云原生在京东丨揭秘五大云原生项目在京东的落地实践

≡放荡痞女 提交于 2020-08-13 00:21:43
如今,云原生被企业和开发者奉为一种标准,并被认为是云计算的未来。 严格来说, 云原生并不是一个产品的名称,而是一套技术体系和一套方法论,它包括 DevOps、持续交付、微服务、容器、敏捷基础设施等内容。 云原生(Cloud Native)概念在 2013 年被首次提出,在云原生技术全面爆发之前,我们开发的应用可以被称为非云原生应用,非云原生应用并没有考虑到应用的弹性和规模性,甚至很多都不具备扩展性,当业务规模扩大时,特别依赖硬件的升级,进而带来了很多问题。 京东在每年的 618、11.11 都会面临海量数据和流量增长,从前端网站、订单、结算、支付、搜索、推荐,到后端的仓储、配送、客服、售后各种业务系统都面临着前所未有的挑战。因此,京东自然需要一个灵活的、有弹性的、可规模化扩展的平台,这也决定了京东从很早开始就拥抱云原生。 京东目前运营着全球 最大规模的 Docker 集群、Kubernetes 集群 ,以及最复杂的 Vitess 集群之一,基本实现了“All in Containers”,是目前全球容器化最彻底的互联网企业之一。 京东作为容器技术先行者,早在 2014 年,就率先将 Docker 容器技术大规模应用至生产环境。在 2016 年初开始实践 Kubernetes,在2017年初基于 Vitess 构建起弹性数据库,并且自研京东“阿基米德”调度系统

数据库中间件设计分析

删除回忆录丶 提交于 2020-08-11 08:22:07
目录 1.为什么需要中间件 不分库篇 (1)普通的应用程序 (2)并发读写大--缓存 (3)缓存过期问题--读写分离+缓存 (4)隔离对DAO层影响--数据库中间件+读写分离+缓存 (5)业务模块多--集群+数据库中间件+读写分离+缓存 分库篇 (1)业务模块多,数据总量大--分库+缓存 (2)分库对Dao层代码影响--分库+数据库中间件+缓存 (3)读写压力大--分库+读写分离+数据库中间件+缓存 2.数据库中间价设计要点 (1)垂直拆分 (2)水平拆分 (3)无论是垂直拆分、水平拆分,都有共同的技术难点 (4)数据库中间件的两种实现模式 (5)常用数据库中间件简介 小结 1.为什么需要中间件 不分库篇 (1)普通的应用程序 数据库访问 数据库存储的数据量不是很大,但并发的读写操作都很大,超过数据库服务器的处理能力。 阿里云-RDS版MySQL性能测试结果(MySQL 5.6) TPS:每秒钟处理事务数量 QPS:每秒钟SQL语句执行条数(并发请求数) (2)并发读写大–缓存 业务场景 :数据量不是很大,仅并发读写超过数据库服务器的处理能力 解决办法 : 加缓存 (3)缓存过期问题–读写分离+缓存 业务场景 :缓存会有过期命不中,还是会有大量的读和全部的写操作将请求数据库,如果数据库支持不起,怎么办? 解决办法 :读写分离+缓存 (4)隔离对DAO层影响–数据库中间件+读写分离

京东智联云亮相KubeCon 2020 探寻云原生技术发展之路

﹥>﹥吖頭↗ 提交于 2020-08-04 10:16:04
7月30日-8月1日,由CNCF与全球开源志愿者共同发起的“Cloud Native + Open Source Virtual Summit China 2020中国线上峰会”(以下简称为“KubeCon 2020”)将正式拉开帷幕。承载京东“千锤百炼”技术能力的京东智联云也将参加此次峰会,并通过技术演讲等方式,向全球开发者展示 京东在技术开源、云原生产品技术 与服务等领域的落地进展,共同探讨云原生技术的未来与前景。 KubeCon 2020邀请京东智联云的技术专家为全球开发者带来《基于Kubernetes的有状态云服务建设实践》主题演讲,将详细讲解 京东智联云如何基于Kubernetes构建有状态的云数据库服务,解决数据库服务的高可用、数据的备份、恢复及扩容等问题。 此外京东零售的技术专家将带来 《 深入了解:深入ChubaoFS-存储引擎 》 内容分享。京东智联云开发者也精心打造了 《起底京东云原生技术实践与探索之路》 迷你书和云原生技术专区,通过技术文章、短视频等形式全方位展示,为开发者带来云原生的饕餮盛宴。 在云原生技术全面爆发前,早在2014年,京东就率先将Docker容器技术大规模应用至生产环境,2016年上线了京东新一代容器引擎平台JDOS2.0,成功从OpenStack切换到JDOS 2.0的Kubernetes技术栈,打造了完整高效的PaaS平台

用 SQL 查询 Git 仓库

一个人想着一个人 提交于 2020-04-06 22:40:36
Git 已经成为了代码版本控制的事实标准,但尽管 Git 相当普及,对代码仓库的深入分析的工作难度却没有因此而下降;而 SQL 在大型代码库的查询方面则已经是一种久经考验的语言,因此诸如 Spark 和 BigQuery 这样的项目都采用了它。 所以,source{d} 很顺理成章地将这两种技术结合起来,就产生了 gitbase(LCTT 译注:source{d} 是一家开源公司,本文作者是该公司开发者关系副总裁)。gitbase 是一个代码即数据code-as-data的解决方案,可以使用 SQL 对 git 仓库进行大规模分析。 gitbase 是一个完全开源的项目。它站在了很多巨人的肩上,因此得到了足够的发展竞争力。下面就来介绍一下其中的一些“巨人”。 gitbase playground 为 gitbase 提供了一个可视化的操作环境。 用 Vitess 解析 SQL gitbase 通过 SQL 与用户进行交互,因此需要能够遵循 MySQL 协议来对通过网络传入的 SQL 请求作出解析和理解,万幸由 YouTube 建立的 Vitess 项目已经在这一方面给出了解决方案。Vitess 是一个横向扩展的 MySQL 数据库集群系统。 我们只是使用了这个项目中的部分重要代码,并将其转化为一个可以让任何人在数分钟以内编写出一个 MySQL 服务器的 开源程序 ,就像我在

Mysql分库分表全面理解

时光毁灭记忆、已成空白 提交于 2020-04-05 20:47:03
引言 微服务、分布式大行其道的当下,中、高级Java工程师面试题中高并发、大数据量、分库分表等已经成 了面试的高频词汇,这些知识不了解面试通过率不会太高。你可以不会用,但你不能不知道,就是这么 一种现状。技术名词大多晦涩难懂,不要死记硬背理解最重要,当你捅破那层窗户纸,发现其实它也就 那么回事。 一、为什么要分库分表 关系型数据库以MySQL为例,单机的存储能力、连接数是有限的,它自身就很容易会成为系统的瓶 颈。当单表数据量在百万以里时,我们还可以通过添加从库、优化索引提升性能。一旦数据量朝着千万 以上趋势增长,再怎么优化数据库,很多操作性能仍下降严重。为了减少数据库的负担,提升数据库响 应速度,缩短查询时间,这时候就需要进行分库分表。 二、如何分库分表 分库分表就是要将大量数据分散到多个数据库中,使每个数据库中数据量小响应速度快,以此来提升数 据库整体性能。核心理念就是对数据进行切分(Sharding),以及切分后如何对数据的快速定位与整合。 针对数据切分类型,大致可以分为:垂直(纵向)切分和水平(横向)切分两种。 1、垂直切分 垂直切分又细分为垂直分库和垂直分表 垂直分库 垂直分库是基于业务分类的,和我们常听到的微服务治理观念很相似,每一个独立的服务都拥有自己的 数据库,需要不同业务的数据需接口调用。而垂直分库也是按照业务分类进行划分,每个业务有独立数 据库,这个比较好理解。

面试总被问分库分表怎么办?你可以这样怼他

不问归期 提交于 2020-02-26 22:03:03
引言 微服务、分布式大行其道的当下,中、高级Java工程师面试题中高并发、大数据量、分库分表等已经成了面试的高频词汇,这些知识不了解面试通过率不会太高。你可以不会用,但你不能不知道,就是这么一种现状。技术名词大多晦涩难懂,不要死记硬背理解最重要,当你捅破那层窗户纸,发现其实它也就 那么回事。 一、为什么要分库分表 关系型数据库以MySQL为例,单机的存储能力、连接数是有限的,它自身就很容易会成为系统的瓶颈。当单表数据量在百万以里时,我们还可以通过添加从库、优化索引提升性能。一旦数据量朝着千万以上趋势增长,再怎么优化数据库,很多操作性能仍下降严重。为了减少数据库的负担,提升数据库响应速度,缩短查询时间,这时候就需要进行 分库分表 。 二、如何分库分表 分库分表就是要将大量数据分散到多个数据库中,使每个数据库中数据量小响应速度快,以此来提升数据库整体性能。核心理念就是对数据进行切分( Sharding ),以及切分后如何对数据的快速定位与整合。针对数据切分类型,大致可以分为:垂直(纵向)切分和水平(横向)切分两种。 1、垂直切分 垂直切分又细分为 垂直分库 和 垂直分表 垂直分库 垂直分库是基于业务分类的,和我们常听到的微服务治理观念很相似,每一个独立的服务都拥有自己的数据库,需要不同业务的数据需接口调用。而垂直分库也是按照业务分类进行划分,每个业务有独立数 据库,这个比较好理解。

How to shard only specific tables using vitess

混江龙づ霸主 提交于 2020-01-24 15:04:42
问题 I have created an unsharded keyspace with three tables. Now I would like to shard my keyspace for first two tables but don't want to shard the third table. How can this be done? Vitess documentation does not contain any info or example regarding this. Please help. Thanks! 回答1: Vertical sharding in vitess is similar to horizontal sharding. You should use the vtworker VerticalSplitClone command instead of SplitClone. We plan to fix the documentation to explain this, hopefully soon. 来源: https:/

How to manage conflicting DataProc Guava, Protobuf, and GRPC dependencies

时间秒杀一切 提交于 2019-12-07 05:58:28
问题 I am working on a scala Spark job which needs to use java library (youtube/vitess) which is dependent upon newer versions of GRPC (1.01), Guava (19.0), and Protobuf (3.0.0) than currently provided on the DataProc 1.1 image. When running the project locally and building with maven, the correct versions of these dependencies are loaded an the job will run without issue. When submitting the job to DataProc, the DataProc version of these libraries are preferred and the job will reference class

开源无疆|京东云参加2019开源年会,助力开源

陌路散爱 提交于 2019-12-04 05:41:24
开源已经成为信息技术发展的重要力量。无论是云计算、大数据,还是人工智能、区块链等领域,都大量采用了开源技术。据 GitHub 数据披露,GitHub 注册用户超 4000 万,美国程序员占比 20%,中国开发者数量排名第二。2019年发布的《开源产业白皮书(2019年)》显示,全球开源产业链已经形成,而中国已经应用了开源技术的企业占比达到86.7%,计划应用开源技术的企业占比 10.6%,开源技术已经被企业普遍接受。 2019年11月2-3日,【2019中国开源年会 (COSCon'19) 】于上海正式举办,京东云赞助参与了此次大会。大会共包含9个分会场,分别是开源社区与项目、企业开源、开源操作系统、开源教育、开源硬件、女性参与开源、工作坊/实训营、开源治理以及开源社区与项目&见面会、闪电演讲等。 在大会上,京东云产品研发部高级总监李道兵为技术人员带来了《云上Cloud Native的落地方法》的主题分享,就京东云在Cloud Native上的思考与实践和大家进行了交流。 京东云产品研发部高级总监 李道兵 目前京东云比较关注的开源项目集中在Kubernetes生态,通过京东云的原生容器与Kubernetes的结合,我们希望能将原生容器和Kubernetes通过一个比较紧密的方式结合在一起。比如在Kubernetes里的Kata Container

How to specify sql dialect when creating spark dataframe from JDBC?

僤鯓⒐⒋嵵緔 提交于 2019-12-01 08:40:36
问题 I'm having an issue reading data via custom JDBC with Spark. How would I go about about overriding the sql dialect inferred via jdbc url? The database in question is vitess (https://github.com/youtube/vitess) which runs a mysql variant, so I want to specify a mysql dialect. The jdbc url begins with jdbc:vitess/ Otherwise the DataFrameReader is inferring a default dialect which uses """ as a quote identifier. As a result, queries via spark.read.jdbc get sent as Select 'id', 'col2', col3', 'etc