当前位置: 主页 > 现场报码结果168 > 正文

MyCat数据库的基础配置及使用

作者:admin 来源:未知 浏览: 【 】 发布时间:2019-09-21 评论数:

  Hi,欢迎来到梁钟霖个人博客网站。本博客是自己通过代码构建的。前端html,后端java技术。对这些技术有兴趣的朋友可以加入,我们一起学习进步。嘿嘿,欢迎来到梁子个人博客!~

  昨天看到文章说itsio下通过在每个pod中部署sidecar进程,让基础组件如链路追踪无需业务框架,并且可以在单服务层面做熔断,限流,降级和路由分发,昨天看了觉得好棒啊!! 结果今天又看到这篇文章,就把昨天看的东西推翻了。单个pod中跑着应用和基础组件,如果sidecar组件本身需要迭代更新,就会导致整个系统所有的应用服务都要打镜像更新!然后社区给了解决方案叫啥Agent热升级,还有Operator方案,引入新的方案解决一个因为新方案产生的问题,最终把简单的业务搞的超级复杂了,人力物力越来越多真的值得吗?

  撸了今年阿里、腾讯和美团的面试,我有一个重要发现.......

  随着计算机和信息技术的迅猛发展,行业应用系统的规模迅速扩大,行业应用所产生的数据量呈爆炸式增长,动辄达到数百TB甚至数百PB的规模,已远远超出传统计算技术和信息系统的处理能力,集中式数据库面对大规模数据处理逐渐表现出其局限性。因此,人们希望寻找一种能快速处理数据和及时响应用户访问的方法,也希望对数据进行集中分析、管理和维护。这已经成为迫切需求。

  分布式数据库是在集中式数据库的基础上发展起来的,是计算机技术和网络技术结合的产物。分布式数据库是指数据在物理上分布而在逻辑上集中管理的数据库系统。物理上分布是指数据分布在物理位置不同并由网络连接的节点或站点上;逻辑上集中是指各数据库节点之间的逻辑上是一个整体,并由统一的数据库管理系统管理。不同的节点分布可以跨不同的机房、城市甚至国家。

  分布式数据库具有透明性、数据冗余性、易于扩展性、自治性等特点,还具有经济、性能优越、响应速度更快、灵活的体系结构、易于集成现有系统等特点。

  MyCat是一个彻底开源的面向企业应用开发的大数据库集群,支持事务、ACID,是可以替代MySQL的加强版数据库。MyCat被视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群,它是整合了内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server,是结合了传统数据库和新型分布式数据仓库的新一代企业级数据库产品,也是一个优秀的数据库中间件。

  既然有逻辑库,就会有逻辑表。在分布式数据库中,对于应用来说,读写数据的表就是逻辑表。逻辑表可以分布在一个或多个分片库中,也可以不分片。

  分片表是指将数据量很大的表切分到多个数据库实例中,所有分片组合起来构成了一张完整的表。例如在MyCat上配置t_node的分片表,数据按照规则被切分到dn1、dn2两个节点。

  关系型数据库是基于实体关系模型(Entity Relationship Model)的,MyCat中的ER表便来源于此。基于此思想,MyCat提出了基于E-R关系的数据分片策略,子表的记录与其所关联的父表的记录存放在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据关联查询不会跨库操作。

  表分组是解决跨分片数据关联查询的一种很好的思路,也是数据切分的一条重要规则。

  在一个真实的业务场景中往往存在大量类似的字典表,这些字典表中的数据变动不频繁,而且数据规模不大,很少有超过数十万条的记录。

  当业务表因为规模进行分片后,业务表与这些附属的字典表之间的关联查询就成了比较棘手的问题,所以在MyCat中通过数据冗余来解决这类表的关联查询,即所有分片都复制了一份数据,我们把这些冗余数据的表定义为全局表。

  数据冗余是解决跨分片数据关联查询的一种很好的思路,也是数据切分规划的另一条重要规则。

  将数据切分后,一个大表被分到不同的分片数据库上,每个表分片所在的数据库是分片节点。

  将数据切分后,每个分片节点不一定会独占一台机器,同一台机器上可以有多个分片数据库,这样一个或多个分片节点所在的机器就是节点主机。为了规避单节点主机并发数量的限制,尽量将读写压力高的分片节点均匀地放在不同的节点主机上。

  MyCat原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析,例如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL语句发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。

  schema.xml是MyCat的重要配置文件,它管理着逻辑库、分片表、分片节点和分片主机等信息。

  server.xml配置文件包含了MyCat的系统配置信息,对应的源码是SystemConfig.java。它有两个重要的标签,分别是user、system。掌握system标签的各项配置属性是MyCat调优的关键。

  SqlMaxLimit属性,当该属性设置为某个值时,每次执行的SQL语句如果没有加上limit语句,MyCat也会自动在limit语句后加上对应的值。如果不设置该值,则MyCat会把查询到的信息全部返回。

  dataNode标签定义了MyCat中的数据节点,也就是我们通常所说的数据分片。一个dataNode标签就是一个独立的数据分片。

  dataHost标签在MyCat逻辑库中作为底层标签存在,直接定义了具体的数据库实例,读写分离和心跳语句。

  在MyCat中将表分为两种大的概念:数据量小且不需要做数据切分的表,称为非分片表;数据量大到单库性能、容量不足以支撑,数据需要通过水平切分均匀分布到不同的数据库中的表,称为分片表。而中间件最终需要处理的事情是对数据切分、聚合。

  ER模型是实体关系模型,广泛采用概念模型设计方法,基本元素是实体、关系和属性。MyCat将它引入数据切分规则中,使得有互相依赖的表能够按照某一规则切分到相同的节点上,避免跨库Join关联查询。具体详情配置内容在这里不做描述请参考官方文档。

  由于集群是乐观的并发控件,事务commit可能在该阶段中止,www.030456c.com,所以如果有两个事务向集群中的不同节点的同一行写入并提交,则失败的节点将中止。对于集群级别的中止,集群返回死锁错误。

  整个集群的写入吞吐量由最弱的节点限制,如果有一个节点变得缓慢,那么整个集群将变得缓慢。

  集群内部按照id自增长机制写入数据,比如集群中有三台可能是3,6,9这样的递增。

  MyCat是一个中间件的第三方应用,sharding-jdbc是一个jar包。 因为MyCat是单独部署,所以使用MyCat就像是访问数据库一样,而sharding-jdbc的逻辑都是需要在工程里写的。

  欢迎来到梁钟霖个人博客网站。本个人博客网站提供最新的站长新闻,各种互联网资讯。 还提供个人博客模板,最新最全的java教程,java面试题。在此我将尽我最大所能将此个人博客网站做的最好! 谢谢大家,愿大家一起进步!

六和码开奖结果| 香港挂牌彩图官网| 香港特区白小姐彩图库| 蓝财神报玄机图 香港| 香港最快开奖现场直播开奖记录| 特区总站娱乐第一站| 聚宝盆马会论坛| 美人鱼心水论坛| j2开奖直播网| 香港挂牌图|