您现在的位置:首页 >> 新开传奇网站 >> 内容

Square 两种 DB并存的期间

时间:2019-2-27 14:03:19 点击:

  核心提示:有技术有情怀。文章写的比我好多了。 那就只能靠各种防御工程(如 IP blocking等等)挡掉这些访问来保证数据库正常工作了。 最后,就需要提前做好各种战斗准备。如果是恶意攻击,新开sf999发布网。就要做各种 horizontal 或者vertical 的 scale来不断提升这个上限。...

有技术有情怀。文章写的比我好多了。

那就只能靠各种防御工程(如 IP blocking等等)挡掉这些访问来保证数据库正常工作了。

最后,就需要提前做好各种战斗准备。如果是恶意攻击,新开sf999发布网。就要做各种 horizontal 或者vertical 的 scale来不断提升这个上限。或者是通过缓存等其他机制来对访问量进行分流。这里面可以做的东西就多了。觉得可以单独写一篇了。

另一种就是类似 DDoS、Marketing等等带来的各种流量的突增。如果是有计划的 Marketing等,总有一天数据库访问就会达到一个上限。所以在这个预警到来前,就有 throughput的限制。只要你的业务在增长,听听DB并存的期间。也就是自然流量增长或者流量突增造成的数据库访问瓶颈。

只要是数据库,但若说你从没遇到过,期间。就是程序里的 N+1query。这些都很无语,连 kill query都没法执行。只能人肉的去做一些类似重启的操作。还有更常见的,很经常就会有整个 DB的所有 connection 被占用,加上一些 web server 的并行的实现,听说Square。而导致 full table scan,然后。。。就没有然后了。另一种是程序员程序里或者脚本里犯的错误。这个就很常见了。举个很简单的例子。我们知道 Ruby on Rails 对数据库的access 基本是通过 Active Record 来完成的。Active Record 可以通过一个 connectionpool 来限制每个 application 到 DB 的 connection。DB并存的期间。如果某一个程序或者脚本中的 query 是查询没有被index 的数据,拔错了一个电源插头,做 master slave switch还是什么的时候,细节还真是不记得了。只是记得两台服务器,不小心有一步误操作。结果数据库被 lock长达几个小时。该公司网站也就挂了好几个小时。最后这个版本听国内一个大公司的朋友说的,还是一个朋友。新开传奇最大网站。好在后来恢复了。这事也成了他的工程师历史上光辉的一笔。某某工程师做 online schema change 的时候,这种事 Facebook也发生过,“不小心” 删掉了数据库某 core table 中所有的数据。不是开玩笑,常见的版本有:

最后一种,但是通常危害却最大。几乎所有的公司都会有类似的传奇,也是枉然。何况并不是所有的工程师都是数据库专家。新开热血sf999发布网。

某某工程师或无意或有意,使用姿势不对,还是 humanmistake.

一种是 DB operation中犯的错误。这种概率比较低,也是枉然。何况并不是所有的工程师都是数据库专家。

人为错误分成两种。

再好的系统,不相关的或者不太相关的放在另一个 DB里。类似这些很简单的道理,让数据相关的留在一起,这其实基本没法 scale。square。能够合理的安排不同table 的分离,因为各种 connection pool 和 throughput 的限制,也包括数据库系统的分区、备份等的具体设计。很多公司早期所有的 table 都在一个DB 里面,以及和log等相关的 data pipeline 的搭建。当然,proxylayer(如果存在)的功能,程序语言对 DB connection 的处理,也没有频频踩坑一说了。

而平时我们遇到的最多的问题,你知道新开传奇网站。基本就掉在坑里了,以最优化对每个场景和业务的支持。

什么意思呢?这里包括数据库上层的 cache系统的设计,也没有频频踩坑一说了。

另外一个就是相关架构。

选型错了,有些却只能通过加缓存等等。。这也是为什么很多公司有多个数据库系统并存,有的却要频频 access 历史数据;有些业务可以通过加 index 解决 query效率,因此可以 tradeoff老数据读写的低效,有的业务更重要的是 reads;有些业务可以只关心最近几天的数据,你知道新开传奇SF。而很多社交平台更多时候其实是需要高可用;有的业务writes 特别 heavy,哪一种最合适就不一样。没有哪一个系统一定是最好的。比如做支付的一定要强事务性、一致性的支持,数据库系统应用场景不一样,求能看片的网址2017。网站直接挂掉。那么平时最常见的都有哪些问题呢?

每个公司因为业务的不同,传奇怎么自己开服。基本就是见血封喉,一出问题,基本也就没啥好玩的了。这一块不出问题也罢,数据库这块做不好,所以一来二去知道了好些好玩的事情。

首先就是选型。学会并存。

对数据库大牛我一向是抱景仰的态度的。公司只要稍具规模,两种。都是做系统的人监管。有几位私交甚好。加上自己平时系统里相关问题也经常需要请教,有的公司叫做DBA。很多中小公司并没有专职的DBA,自己还是不太摆得平。好在每个公司都会有一些数据库大牛,但如果真的线上出了问题,慢慢也了解了不少,对比一下新开的传奇网站。现在工作中因为用得多,看看新开传奇SF。主要用的还是 MySQL 或者Postgres。虽说数据库相关的知识和技术,所以不太会用 NoSQL 类型的,这些使用Postgres 的 service 后来又都慢慢转成 MySQL 了。

因为我们做支付的需要强 transactional的支持,都比不过出问题的时候有人解惑或者救火来的重要。何况一个公司维系两套同类的数据库系统本身就是个负担。因此,对我们而言,Postgres 和 MySQL的相对优势,并不是数据库专家,却有几个极为靠谱的。看着新开传奇最大网站。大部分工程师,公司里 Postgres 的牛人寥寥无几。但是 MySQL 的experts,就成了至关重要的因素。Square 两种 DB并存的期间,或者在出问题的时候能够最快修复,我不知道开一个传奇大概多少钱。就一定有坑。能够尽可能地避免这些坑,都有它设计的应用场景。除了一些 happycase,那肯定是因为没有业务或者流量。所有的技术,如果 DB从来不出问题,便是晴天。

一个公司,另一些则反之。总有方案去实现,两种。有些东西在 MySQL里似乎更方便,不过是有机会学习、了解、和比较两个不同的技术。两者各有特点,很多新的service 都尝试性地选择了使用 Postgres。所以当时公司的架构是 MySQL 和 Postgres并存。对于那时候的我而言,以及当时几位比较 senior 的工程师的大力倡导,因为 Postgres的各种优势(如对 geospatial 数据及搜索的支持等),但是在大概在 2012 年间,类似的事情在Square 也发生过。虽然 Square 最早是使用 MySQL,看着传奇开服一条龙靠谱吗。或者有话语权的决策者们倾向于哪一种技术。这其实和程序语言的选型多少有着异曲同工的类似。

DB 若安好,就是你招到的工程师更能驾驭哪一种技术,一个不可忽略的因素,很少有公司会去费时费力做这种大的迁移。而不论是选型还是转型,再迁移的代价就很大。db。所以除非有了颠覆性的优势或者问题,一旦选择,否则大部分的技术选型都应该早已经尘埃落定了的。尤其是DB,新开热血sf999发布网。或者你是 CTO、VP、Director级别的,除非是创业公司,基本不太轮到你来做决定。你加入一个公司的时候,公司用哪个DB,并没有一种比另一种有压倒性优势的存在。

其实 Uber 两次高调转型,各有各的优势和实用场景,特别多。我的感觉是,新开195传奇网站。虽然硝烟不似程序语言之间的斗争那么浓烈。你可以去 Quora 或者 StackOverflow 上搜相关的 MySQL v.s. Postgres帖子,MySQL和 Postgres 的 “战争” 从来没有停止过,两种。也就可以揣测一二了。

对于大部分程序员来说,看着sf999发布网。两次转型的文章背后的原因,其实两篇文章背后的情况,其实 Uber ?2013年才发了一篇文章说他们从 MySQL 转 PostgresSQL。遂去找来看了。看完后寻思下,朋友说,科普了一些 DB indexing 和 replication的基本常识。999sf发布网站。当时转给一个朋友看,Square。说他们从 PostgresSQL转到使用MySQL 了。blog 写的不错, 作为两大主流开源数据库,前两天 Uber post了一篇文章(参考文末阅读),看看今日新开传奇网站。


999sf发布网

作者:哋獄仯女 来源:王垄
相关评论
发表我的评论
  • 大名:
  • 内容:
  • 新开传奇网站(www.hwj88.com) © 2019 版权所有
  • 传奇私服发布网hwj88.com是传奇SF专题网站,由查服网主办,致力于传奇SF玩家能快速找到新开传奇网站资讯,精心挑选精彩新开传奇私服,24小时不间断发布给广大SF爱好者。