精华内容
下载资源
问答
  • 什么叫运维

    2013-08-05 15:18:19
    运维中关键技术点解剖:1 大量高并发网站的设计方案 ;2 高可靠、高可伸缩性网络架构设计...然后我们再对大型网站与小型网站进行范围定义,此定义主要从运维复杂性角度考虑,如网站规范、知名度、服务器 量级、pv量...

    运维中关键技术点解剖:1 大量高并发网站的设计方案 ;2 高可靠、高可伸缩性网络架构设计;3 网站安全问题,如何避免被黑?4 南北互联问题,动态CDN解决方案;5 海量数据存储架构

    一、什么是大型网站运维?

    首先明确一下,全文所讲的”运维“是指:大型网站运维,与其它运维的区别还是蛮大的;然后我们再对大型网站与小型网站进行范围定义,此定义主要从运维复杂性角度考虑,如网站规范、知名度、服务器 量级、pv量等考虑,其它因素不是重点;因此,我们先定义服务器规模大于1000台,pv每天至少上亿(至少国内排名前10),如sina、baidu、 QQ,51.com等等;其它小型网站可能没有真正意义上的运维工程师,这与网站规范不够和成本因素有关,更多的是集合网络、系统 、开发工作于一身的“复合性人才”,就如有些公司把一些合同采购都纳入了运维职责范围,还有如IDC网络规划也纳入运维职责。所以,非常重要一定需要明白:运维对其它关联工种必须非常了解熟悉:网络、系统、系统开发、存储,安全,DB等;我在这里所讲的运维工程师就是指专职运维工程师。

    我们再来说说一般产品的“出生”流程:

    1、首先公司管理层给出指导思想,PM定位市场需求(或copy成熟应用)进行调研、分析、最终给出详细设计。

    2、架构师根据产品设计的需求,如pv大小预估、服务器规模、应用架构等因素完成网络规划,架构设计等(基本上对网络变动不大,除非大项目)

    3、开发工程师将设计code实现出来、测试工程师对应用进行测试。

    4、好,到运维工程师出马了,首先明确一点不是说前三步就与运维工作无关了,恰恰相反,前三步与运维关系很大:应用的前期架构设计、软/硬件资源评估申请采购、应用设计性能隐患及评估、IDC、服务性能\安全调优、服务器系统级优化(与特定应用有关)等都需运维全程参与,并主导整个应用上线项目;运维工程师负责产品服务器上架准备工作,服务器系统安装、网络、IP、通用工具集安装。运维工程师还需要对上线的应用系统架构是否合理、是否具备可扩展性、及安全隐患等因素负责,并负责最后将产品(程序)、网络、系统三者进行拼接并最优化的组合在一起,最终完成产品上线提供用户使用,并周而复使:需求->开发(升级)->测试->上线(性能、安全问题等之前预估外的问题随之慢慢就全出来了)在这里提一点:网站开发模式与传统软件开发完全不一样,网站一天开发上线1~5个升级版本是家常便饭,用户体验为王嘛,如果某个线上问题像M$ 需要1年解决,用户早跑光了;应用上线后,运维工作才刚开始,具体工作可能包括:升级版本上线工作、服务监控、应用状态统计、日常服务状态巡检、突发故障处理、服务日常变更调整、集群管理、服务性能评估优化、数据库管理优化、随着应用PV增减进行应用架构的伸缩、安全、运维开发工作:

    a 、尽量将日常机械性手工工作通过工具实现(如服务监控、应用状态统计、服务上线等等),提高效率。

    b、解决现实中服务存在的问题,如高可靠性、可扩展性问题等。

    c、大规模集群管理工具的开发,如1万台机器如何在1分钟内完成密码修改、或运行指定任务?2000台服务器如何快速安装操作系统?各分布式IDC、存储集群中数PT级的数据如何快速的存储、共享、分析?等一系列挑战都需运维工程师的努力。

    在此说明一下其它配合工种情况,在整个项目中,前端应用对于网络/系统工程师来说是黑匣子,同时开发工程师职责只是负责完成应用的功能性开发,并对应用本身性能、安全性等应用本身负责,它不负责或关心网络/系统架构方面事宜,当然软/硬件采购人员等事业部其它同事也不会关心这些问题,各司其职,但项目的核心是运维工程师~!所有其它部门的桥梁。

    上面说了很多,我想大家应该对运维有一些概念了,在此打个比方吧,如果我们是一辆高速行驶在高速公路上的汽车,那运维工程师就是司机兼维修工,这个司机不简单,有时需要在高速行驶过程中换轮胎、并根据道路情况换档位、当汽车速度越来越快,汽车本身不能满足高速度时对汽车性能调优或零件升级、高速行进中解决汽车故障及性能问题、时刻关注前方安全问题,并先知先觉的采取规避手段。这就是运维工作~!

    最后说一下运维工程师的职责:”确保线上稳定“,看似简单,但实属不容易,运维工程师必须在诸多不利因素中进行权衡:新产品模式对现有架构及技术的冲击、产品高频度的升级带来的线上BUG隐患、运维自动化管理承度不高导致的人为失误、IT行业追求的高效率导致流程执行上的缺失、用户增涨带来的性能及架构上的压力、IT行业宽松的技术管理文化、创新风险、互联网安全性问题等因素,都会是网站稳定的大敌,运维工程师必须把控好这最后一关,需具体高度的责任感、原则性及协调能力,如果能做到各因素的最佳平衡,那就是一名优秀的运维工程师了。

    另外在此聊点题外话,我在这里看到有很多人要sina、QQ、baidu,51.com等聊自已的运维方面的经验,其实这对于它们有点免为其难:

    a、各公司自已网络架构、规模、或多或少还算是公司的核心秘密,要保密,另外,对于大家所熟知的通用软件、架构,由于很多公司会根据自已实际业务需要,同时因为原版性能、安全性、已知bug、功能等原因,进行过二次开发(如apache,php,mysql ),操作系统内核也会根据不同业务类型进行定制的,如某些应用属于运算型、某些是高IO型、或大存储大内存型。根据这些特点进行内核优化定制,如sina就在 memcache上进行过二次开发,搞出了一个MemcacheDB,具体做得如何我们不谈,但开源了,是值得称赞的,国内公司对于开源基本上是索取,没有贡献;另外,服务器也不是大家所熟知的型号,根据业务特点,大部份都是找DELL/HP/ibm进行过定制;另外,在分布式储存方面都有自已解决方案,要不就是使用现成开源hadoop等解决方案,或自已开发。但90%都是借鉴google GFS的思想:分布式存储、计算、大表。

    b、各公司业务方向不一样,会导致运维模式或方法都不一样,如51.com和baidu运维肯定区别很大,因为他们业务模式决定了其架构、服务器量级、 IDC分布、网络结构、通用技术都会不一样,主打新闻门户的sina与主打sns的51.com运维模式差异就非常大,甚至职责都不大一样;但有一点,通用技术及大致架构上都大同小异,大家不要太神化,更多的公司只是玩垒积木的游戏罢了,没什么技术含量。

    c、如上面所讲,目前大型网站运维还处于幼年时期理念和经验都比较零散,没有成熟的知识体系,可能具体什么是运维,大家都要先思索一番,或压根没想过,真正讨论也只是运维工作的冰山一角,局限于具体技术细节,或某某著名网站大的框架,真正运维体系化东西没有,这也许是目前网上运维相关资料 比较少的原故吧。或者也是国内运维人员比较难招,比较牛的运维工程师比较少见的原因之一吧。

    二、运维工作师需要什么样的技能及素质

    做为一名运维工程师需要什么样的技能及素质呢,首先说说技能吧,如大家上面所看到,运维是一个集多IT工种技能与一身的岗位,对系统->网络 ->存储->协议->需求->开发->测试->安全等各环节都需要了解一些,但对于某些环节需熟悉甚至精通,如系统 (基本操作系统的熟悉使用,*nix,windows ..)、协议、系统开发(日常很重要的工作是自动运维化相关开发、大规模集群工具开发、管理)、通用应用(如lvs、ha、web server 、db、中间件、存储等)、网络,IDC拓朴架构;

    技能方面总结以下几点:

    1、开发能力,这点非常重要,因为运维工具都需要自已开发,开发语言:perl、python、php(其中之一)、shell(awk,sed,expect….等),需要有过实际项目开发经验,否则工作会非常痛苦。

    2、通用应用方面需要了解:操作系统(目前国内主要是linux、bsd)、webserver相关 (nginx,apahe,php,lighttpd,java。。。)、数据库(mysql,oralce)、其它杂七八拉的东东;系统优化,高可靠性;这些只是加分项,不需必备,可以边工作边慢慢学,这些东西都不难。当然在运维中,有些是有分工偏重点不一样。

    3、系统、网络、安全,存储,CDN,DB等需要相当了解,知道其相关原理。

    个人素质方面:

    1、沟通能力、团队协作:运维工作跨部门、跨工种工作很多,需善于沟通、并且团队协作能力要强;这应该是现代企业的基本素质要求了,不多说。

    2、工作中需胆大心细:胆大才能创新、不走寻常路,特别对于运维这种新的工种,更需创新才能促进发展;心细,运维工程师是网站admin,最高线上权限者,一不小心就会遗憾终生或打入十八层地狱。

    3、主动性、执行力、精力旺盛、抗压能力强:由于IT行业的特性,变化快;往往计划赶不上变化,运维工作就更突出了,比如国内各大公司服务器往往是全国各地,哪里便宜性价比高,就那往搬,进行大规模服务迁移(牵扯的服务器成百上千台),这是一个非常头痛的问题;往往时间 非常紧迫,如限1周内完成,这种情况下,运维工程师的主动性及执行力就有很高的要求了:计划、方案、服务无缝迁移、机器搬迁上架、环境准备、安全评估、性能评估、基建、各关联部门扯皮,7X24小紧急事故响应等。

    4、其它就是一些基本素质了:头脑要灵光、逻辑思维能力强、为人谦虚稳重、亲和力、乐于助人、有大局观。

    5、最后一点,做网站运维需要有探索创新精神,通过创新型思维解决现实中的问题,因为这是一个处于幼年的职业(国外也一样,但比国内起步早点),没有成熟体系或方法论可以借鉴,只能靠大家自已摸索努力。

    三、怎样才算是一个合格的运维工程师

    1、保证服务达到要求的线上标准,如99.9%;保证线上稳定,这是运维工程师的基本责职所在。

    2、不断的提升应用的可靠性与健壮性、性能优化、安全提升;这方面非常考验主动性和创新思维。

    3、网站各层面监控、统计的覆盖度,软件、硬件、运行状态,能监控的都需要监控统计,避免监控死角、并能实时了解应用的运转情况。

    4、通过创新思维解决运维效率问题;目前各公司大部份运维主要工作还是依赖人工操作干预,需要尽可能的解放双手。

    5、运维知识的积累与沉淀、文档的完备性,运维是一个经验性非常强的岗位,好的经验与陷阱都需积累下来,避免重复性范错。

    6、计划性和执行力;工作有计划,计划后想法设法达到目标,不找借口。

    7、自动化运维;能对日常机械化工作进行提炼、设计并开发成工具、系统,能让系统自动完成的尽量依靠系统;让大家更多的时间用于思考、创新思维、做自已喜欢的事情。

    以上只是技术上的一些层面,当然个人意识也是很重要的。

    四、运维职业的迷惘、现状与发展前景

    运维岗位不像其它岗位,如研发工程师、测试工程师等,有非常明确的职责定位及职业规划,比较有职业认同感与成就感;而运维工作可能给人的感觉是哪方面都了解一些,但又都比上专职工程师更精通、感觉平时被关注度比较低(除非线上出现故障),慢慢的大家就会迷惘,对职业发展产生困惑,为什么会有这种现象呢?除了职业本身特点外,主要还是因为对运维了解不深入、做得不深入导致;其实这个问题其它岗位也会出现,但我发现运维更典型,更容易出现这个问题;

    针对这个问题我谈一下网站运维的现状及发展前景(也在思考中,可能不太深入全面,也请大家斧正补充)

    运维现状:

    1、处于刚起步的初级阶段,各大公司有此专职,但重视或重要程度不高,可替代性强;小公司更多是由其它岗位来兼顾做这一块工作,没有专职,也不可能做得深入。

    2、技术层次比较低;主要处于技术探索、积累阶段,没有型成体系化的理念、技术。

    3、体力劳动偏大;这个问题主要与第二点有关系,很多事情还是依靠人力进行,没有完成好的提练,对于大规模集群没有成熟的自动化管理方法,在此说明一下,大规模集群与运维工作是息息相关的如果只是百十来台机器,那就没有运维太大的生存空间了。

    4、优秀运维人才的极度缺乏;目前各大公司基本上都靠自已培养,这个现状导致行业内运维人才的流动性非常低,非常多好的技术都局限在各大公司内部,如 google 50万台机器科学的管理,或者国内互联公司top 10 的一些运维经验,这些经验是非常有价值的东西并决定了一个公司的核心竞争力;这些问题进而导致业内先进运维技术的流通、贯通、与借签,并最终将限制了运维发展。

    5、很多优秀的运维经验都掌握在大公司手中;这不在于公司的技术实力,而在于大公司的技术规模、海量PV、硬件规模足够大,如baidu可怕的流量、 51.com海量数据~~~~这些因素决定了他们遇到的问题都是其它中/小公司还没有遇到的,或即将遇到。但大公司可能已有很好的解决方案或系统。

    发展前景:

    1、从行业角度来看,随着中国互联网的高速发展(目前中国网民已跃升为全球第一)、网站规模越来越来大、架构越来越复杂;对专职网站运维工程师、网站架构师的要求会越来越急迫,特别是对有经验的优秀运维人才需求量大,而且是越老越值钱;目前国内基本上都是选择毕业生培养(限于大公司),培养成本高,而且没有经验人才加入会导致公司技术更新缓慢、影响公司的技术发展;当然,毕业生也有好处:白纸一张,可塑性强,比较认同并容易融入企业文化。

    2、从个人角度,运维工程师技术含量及要求会越来越高,同时也是对公司应用、架构最了解最熟悉的人、越来越得到重视。

    3、网站运维将成为一个融合多学科(网络、系统、开发、安全、应用架构、存储等)的综合性技术岗位,给大家提供一个很好的个人能力与技术广度的发展空间。

    4、运维工作的相关经验将会变得非常重要,而且也将成为个人的核心竞争力,具备很好的各层面问题的解决能力及方案提供、全局思考能力等。

    5、特长发挥和兴趣的培养;由于运维岗位所接触的知识面非常广阔,更容易培养或发挥出个人某些方面的特长或爱好,如内核、网络、开发、数据库等方面,可以做得非常深入精通、成为这方面的专家。

    6、如果真要以后不想做运维了,转到其它岗位也比较容易,不会有太大的局限性。当然了,你得真正用心去做。

    7、技术发展方向:网站/系统架构师。

    五、运维关键技术点解剖

    1、 大规模集群管理问题

    首先我们先要明确集群的概念,集群不是泛指各功能服务器的总合,而是指为了达到某一目的或功能的服务器、硬盘 资源的整合(机器数大于两台),对于应用来说它就是一个整体,目前常规集群可分为:高可用性集群(HA),负载均衡集群(如lvs),分布式储、计算存储集群(DFS,如google gfs ,yahoo hadoop),特定应用集群(某一特定功能服务器组合、如db、cache层等),目前互联网行业主要基于这四种类型;对于前两种类似,如果业务简单、应用上post操作比较少,可以简单的采用四层交换机 解决(如f5),达到服务高可用/负责均衡的作用,对于资源紧张的公司也有一些开源解决办法如lvs+ha,非常灵活;对于后两种,那就考验公司技术实力及应用特点了,第三种DFS主要应用于海量数据应用上,如邮件、搜索等应用,特别是搜索要求就更高了,除了简单海量存储,还包括数据挖掘、用户行为分析;如 google、yahoo就能保存分析近一年的用户记录数据,而baidu应该少于30天、soguo就更少了。。。这些对于搜索准备性、及用户体验是至关重要的。

    接下来,我们再谈谈如何科学的管理集群,有以下关键几点:

    I、监控

    主要包括故障监控和性能、流量、负载等状态监控,这些监控关系到集群的健康运行,及潜在问题的及时发现与干预;

    a、服务故障、状态监控:主要是对服务器自身、上层应用、关联服务数据交互监控;例如针对前端web server,我们就可以有很多种类型的监控,包括应用端口 状态监控,便于及时发现服务器或应用本身是否crash、通过icmp包探测服务器健康状态,更上层可能还包括应用各频道业务的监控,常用方法是采用面业特征码进行判断,或对重点页面进行签名,以网站被黑篡改(报警、并自动恢复被篡改数据)等等,这些只是一部份,还有N多监控方式,依应用特点而定,还有一些问题需解决,如集群过大,如何高性能的进行监控也是一个现实问题。

    b、其它就是集群状态类的监控或统计,为我们合理管理调优集群提供数据参考、包括服务瓶颈、性能问题、异常流量、***等问题。

    II、故障管理

    a、硬件故障问题;对于成百上千或上万机器的N多集群,服务器死机、硬件故障概率是非常大的,几乎每时每刻都有服务硬件问题,死机、硬盘损坏、电源、内存、交换机。针对这种情况,我们在设计网站架构时需要充分考虑到这些问题,并将其视为常态;更多的依靠应用的冗余机制来规避这种风险,但给系统工程师足够宽裕的处理时间。(如google不是号称同时死800台机器,服务不会受到任何影响吗);这就是考验运维工程师及网站架构师功能的地方了,好的设计能达到google所描述自恢复能力,如gfs,糟糕的设计那就是一台服务器的死机可能会造成大面积服务的连锁故障反映,直接对用户拒绝响应。

    b、应用故障问题;可能是某一bug被触发、或某一性能阀值被超越、***等情况不一而定,但重要的一点,是要有对这些问题的预防性措施,不能想当然,它不会出问题,如真出问题了,如何应对?这需要运维工程师平时做足功夫,包括应急响应速度、故障处理的科学性、备用方案的有效等。

    III、自动化

    自动化:简而言之,就是将我们日常手动进行的一些工作通过工具,系统自动来完成,解放我们的双手及枯燥的重复性劳动,例如:没有工具前,我们安装系统需要一台一台裸机安装,如2000台,可能需要10人/10天,搞烂N张光盘,人力成本更大。。。而现在通过自动化工具,只需几个简单命令 就能搞定、还有如机器人类程序,自动完成以往每天人工干预的工作,使其自动完成、汇报结果,并具备一定的专家系统能力,能做一些简单的是/非判断、优化选择等。。。这些好处非常明显不再多说。。。应该说,自动化运维是运维工程师职业化的一个追求,利已利公,虽然这是一个异常艰巨的任务:不断变更的业务、不规范化的应用设计、开发模式、网络架构变更、IDC变更、规范变动等因素,都可能会对现有自动化系统产生影响,所以需要模块化、接口化、变因参数化等因此,自动化相关工作,是运维工程师的核心重点工作之一,也是价值的体现。

    展开全文
  • 2020-10-31:什么叫分库分表? 前言什么叫分库分表? 前言 每日一题专栏 什么叫分库分表? 分库分表, 顾名思义, 就是使用多个库和多个表甚至多个数据库实例来存储海量的数据。为了分散数据库的压力, 我们会采用分库...

    2020-10-31:什么叫分库分表?

    前言

    每日一题专栏

    什么叫分库分表?

    分库分表, 顾名思义, 就是使用多个库和多个表甚至多个数据库实例来存储海量的数据。为了分散数据库的压力, 我们会采用分库分表的方案, 将一个表结构分为多个表, 或者将一个表的数据分片后放入多个表, 这些表可以放在同一个库里, 也可以放到不同的库里, 甚至可以放在不同的数据库实例上。

    基本上就是两点:

    如果在数据库中表的数量达到了一定的量级, 则需要进行分表, 分解单表的大数据量对索引査询带来的压力, 并方便对索引和表结构的变更 。

    如果数据库的吞吐量达到了瓶颈, 就需要增加数据库实例, 利用多个数据库实例来分解大量的数据库请求带来的系统压力。

    展开全文
  • 如今随着互联网的发展,数据的量级也是成指数式的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求,这个时候NoSQL的出现暂时解决了这一危机。 它通过...

    如今随着互联网的发展,数据的量级也是成指数式的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求,这个时候NoSQL的出现暂时解决了这一危机。

    它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL肯定是无法满足的,所以还是需要使用关系性数据库。如何使用关系型数据库解决海量存储的问题呢?此时就需要做数据库集群,为了提高查询性能将一个数据库的数据分散到不同的数据库中存储,为应对此问题就出现了——MyCat 。

    Mycat是一个开源的分布式数据库系统,其核心功能是分表分库,即将一个大表水平分割为多个小表,存储在后端MySQL或者其他数据库里。取名Mycat原因一是简单好记,另一个则是希望未来能够入驻 Apache,Apache的开源产品Tomcat也是一只猫。

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    于是乎你的小编(雷锋)在这个星期费心费力给大家着重收集并整理了这份关于开源数据库中间件MyCat使用及原理的源码+笔记+项目实战的资料。本资料文将全面的从MyCat基础,高级,集群,监控,架构剖析来讲解MyCat,并通过一个案例来演示在实际开发中,应该如何来实现MyCat进行数据库的分片操作。通过本资料的学习,我们能够全面的掌握MyCat的使用及原理。

    以上就是资料包含的内容,下面小编会展示目录和详细内容截图,有需要完整版源码+笔记的朋友,只有转发+关注,然后在我的主页私信【数据库】即可免费领取!!

    开源数据库中间件MyCat实战笔记

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    1. MyCat简介

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    2. MyCat入门

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    3. MyCat配置文件详解

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    4. MyCat分片

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    5. MyCat高级

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    6. MyCat高可用集群搭建

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    7. MyCat架构剖析

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    8. MyCat综合案例

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    彻底开源技术MyCat入门到开发

    入门篇

    • 概述
    • Mycat前世今生
    • Mycat中的概念
    • 快速入门
    • 日志分析
    • Mycat防火墙配置
    • Mycat的配置
    • Mycat的分片join
    • 全局序列号
    • Mycat分片规则
    • 常见问题与解决方案
    • Mycat性能测试指南

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    高级进阶篇

    • 读写分离
    • 高可用与集群
    • 事务支持
    • Mycat SQL拦截机制
    • Mycat注解
    • MyCAT支持的Catlet实现
    • jdbc多数据库支持
    • 管理命令与监控
    • 压缩协议支持
    • Mycat-Web
    • MyCAT对存储过程的支持

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    生产实践篇

    • 生产实践案例-Mycat读写分离案例
    • 分表分库案例
    • 生产环境部署
    • Mycat最佳实践
    • Mycat实施指南
    • 数据迁移与扩容实践
    • 版本选择与升级指南
    • 性能调优

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    开发篇

    • 加入Mycat
    • Mycat开发基础
    • Mycat架构分析
    • MyCAT线程模型分析
    • mycat的连接池模型
    • Mycat的网络通信框架
    • Mycat的路由与分发流程
    • Mycat的JDBC后端框架
    • Mycat的事务管理机制
    • Mycat的分页和跨库Join
    • Mycat缓存
    • Mycat的分片规则设计
    • Mycat Load Data源码
    • Mycat外传群英会

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

     

    有需要完整版源码+笔记的朋友:

    ——————转发+评论文章,关注我之后私信关键字:【数据库即可。

    展开全文
  • 但由于我本人没有经过什么系统的培训,也没有正式在公司呆过,采用的都是Copy和Paste的方式进行流水式开发(1.0测试版只用了不到三天进行开发,是我阅读了一点点WP的代码之后才产生的开发念头,我感觉WP——太臃肿了!...
  • 比特币挖矿是什么

    2021-03-13 19:54:11
    第二个,“矿工”:是竞争挖矿的人或组织“矿工”; 第三个,“算力”,就是假设一台矿机为10T左右的计算量级,我们就可以说这一台10T的矿机就有10T的算力; 第四个,“工作量证明”,简单理解是「干的越多,收...

    我们首先先来了解一下,7个区块链的基本概念:

    第一个,“挖矿”:获得记账权的过程形象地叫做“挖矿”;

    第二个,“矿工”:是竞争挖矿的人或组织叫“矿工”;

    第三个,“算力”,就是假设一台矿机为10T左右的计算量级,我们就可以说这一台10T的矿机就有10T的算力;

    第四个,“工作量证明”,简单理解是「干的越多,收的越多」,简称“PoW”;

    第五个,“权益证明”,简单理解是「持有越多,获得越多」,简称“PoS”;

    第六个,“区块”,平均每10分钟网络诞生账本的一页,我们称之为区块;

    第七个,“区块链”,每个区块被打上时间戳,按照严格的先后顺序,连接起来,就叫区块链。

    01
    一场全球性的知识竞赛?

    我们知道2008年神秘人中本聪发明比特币的时候,是因为当时发生了全球经济危机,中本聪想,如果能构建一个没有中心机构的货币发行体系,货币就不会被无限超发,大家都很公平公正。于是中本聪构建了比特币这样一个体系。

     

    那么,在一个没有中心化机构的情况下,比特币的发行、记账、交易是怎样进行的呢?

     

    中本聪首先规定了比特币的发行机制。它规定比特币的总量为2100万枚,比特币网络大约每10分钟出一页账单,每个比特币的产生伴随着每一页账单的产生,也就是每一个区块问世和发行。中本聪还规定,最开始每个区块的比特币奖励是50枚,然后每21万个区块减半一次。一直到2140年。所有的比特币发行完毕。

     

    21万个区块,我们算一算,平均每10分钟出一个区块,出21万个区块需要多久呢?理论上需要1458.3天,也就是3.99年。这也就是大众说的“比特币每四年减半”的由来。2016年7月8日开始,比特币第二次减半,也就是每个区块伴随的比特币奖励为12.5枚。

     

    我们怎么去计算现在的区块是第多少个区块呢?很简单,大家用“区块高度”来标记它。也就是一个区块的高度是从比特币诞生之后,第多少个区块!打开任意一个比特币的区块浏览器,我们可以看到现在出来的最新的区块高度。通过区块高度,我们可以计算大概还有多久,比特币会进行下一次减半、多久会进行难度的调整、多久进行一次大事件。

     

    然后中本聪规定了记账的形式。我们知道比特币采用的是工作量证明机制,即PoW机制。所有的矿工通过竞争哈希计算的方式,争夺记账权力。类似每10分钟有一道数学题被丢到网络中,大家比赛,看谁算的快。在每一轮的竞争中,谁最先计算出正确答案,谁就获得了本轮的记账权力。他记录的本页账单,大家都要以此为准。紧接着,大家在这一页账单的基础上,争夺下一页账单的记账权。通过这种共识机制,中本聪解决了在一个去中心化的体系下,账本的唯一性的权益。

     

    矿工为什么要竞争记账呢?用计算机进行计算要消耗电、要存储大量的数据,这样做对矿工有什么好处呢?毕竟纯粹靠公益,这样的体系走不长远。

     

    这也是中本聪最为聪明的一个地方:他把比特币的发行和竞争记账绑定在了一起,记账的人每获得一次记账权,就会获得系统产生的新的比特币作为奖励。也就是说算的最快的计算机,就会「挖」到一定数量的比特币。

     

    在每一轮竞争记账中,谁获得记账权,谁就获得这一个区块里的新诞生比特币奖励和被记录在账单里的交易的手续费。在2017年,如果你是一个矿工,在一轮竞争中获得了记账权,你就会获得12.5个新发行的比特币奖励,还有这个区块上所有的手续费,大约零点几到2个比特币手续费。随着新生比特币每四年减半,新生比特币奖励越来越少,那么矿工还会有动力去挖矿吗?

     

    答案是肯定的。因为他们还有另外一部分收入,就是大家给的比特币转账的手续费。大家还记得我们提到在比特币的世界里转账手续费是可以自己填写的吗?随着使用比特币的人和机构越来越多,全球比特币转账越来越频繁,转账手续费总量也会越来越大,手续费会未来成为矿工的主要收入来源。

     

    比特币的转账,跟我们平时进行银行转账一样,我们选择一个有比特币的地址,输入对方的比特币地址,输入想转账的金额,输入给矿工的手续费,然后用私钥进行签名,提交之后就等着矿工们来处理。中本聪通过加密机制,使得随机生成的一个私钥只能对应一个地址,保证了每个地址发出比特币的合法性。

     

    比特币现在的每个区块大小是1M字节,大概能容纳一千笔交易。当网络转账的人比较少时,等待矿工确认的你可能只需要等10分钟,就能被下一个区块确认了。如果当前转账的人比较多,你可能要排队,多等一个10分钟,甚至更长时间。矿工们会不断的等待记录的转账交易里面去选择手续费比较高的转账信息来进行记账,如果你的手续费不排在前面,可能就要排在很后面才能够记你的账了。

     

    通过这样的设计,中本聪使得比特币的发行、比特币的记账和转账等环节环环相扣,使得整个体系能够自发运转起来。现在,即使中本聪这个核心人物已经销声匿迹,我们看到比特币的自发的生命力,这就是去中心化体系的魅力。

    02
    比特币挖矿是如何运作的?

    那么,在这场知识竞赛中,具体需要做什么题呢?这就得先介绍一下比特币区块的组成部分。

    比特币区块主要由两部分组成:区块头和区块体。

    • 区块头里包含的信息有:版本信息、父区块头哈希值、该区块中默克尔树根的哈希值、时间戳、难度目标、随机数6个字段;
    • 区块体用来装载该区块打包的所有交易。

    对于挖矿而言,收集到区块头里的6个字段,就可以获得比特币奖励,包括创建新区块的奖励及该区块中所含交易的交易费。

    而区块头里的 6 个字段中,除了随机数需要不断试错寻找,其他 5 个字段都是很容易获得的。比如:

    1. 版本信息是用来跟踪软件升级的版本号,可自动从软件信息得到。
    2. 父区块头的哈希值,也就是前一个区块的哈希值,在父区块被挖出后就确定了。你可以把哈希值简单地理解成是一段数据或文件的DNA,只要大数据发生了变化,哪怕是一个微小的变化,其哈希值也会发生变化,用来判断两个文件是否相同。
    3. 当一个区块打包的交易确定了,该区块中默克尔树根的哈希值,即用来确保从其他节点接受的,数据块没有损坏且没有被替换,甚至检查其他节点不会欺骗或者发布虚假的块,就确定了。
    4. 时间戳指该区块产生的近似时间,可以自动记录。
    5. 该区块工作量证明算法的难度目标,同样是系统给出的。

    那么,什么是合适的随机数呢?对区块头里的 6 个字段取哈希值,如果这个值小于或等于系统给定的难度目标值,那么就算是找到了合适随机数。

    矿工通过不断试错,直到找到合适的随机数,新的区块被挖出,就可以得到对应的区块奖励和交易手续费奖励。

    这就是比特币挖矿的过程。

    03
    小结

    比特币矿工挖到比特币的概率,取决于他拥有的算力占全网算力的比值,并非是一门稳赚不赔的生意。

    能否赚钱,不仅要看挖矿的收益,包括挖到比特币的数量和比特币的价格;还要看挖矿的成本,包括矿机成本、矿机的算力、功耗、电费以及其他营运成本等。

    以上就是本次分享的所有内容了,希望对大家有帮助哦!

     

     

    展开全文
  • 导语:V2EX上有一个这样的问题:“V友们对评论敏感词过滤有什么好的解决方案吗”,一位“TimePPT”的网友从“量级、业务需求、策略”等角度做了详细回复,回答的内容不仅专业,质量也非常高。在获得“TimePPT”...
  • [url]http://www.iteye.com/topic/107808[/url] 关于企业级应用与量级概念的讨论 ...]一直觉得“企业级应用”这个说法很别扭,用于企业或其他组织机构的应用软件是“企业应用”,为什么非得企...
  • 设计模式学习笔记——享元模式

    千次阅读 2014-01-05 18:36:00
    次奥,我看《大话设计模式》这本书的时候,一直错看成 亨元模式,搞不懂为什么叫这个名字。现在看清楚了,是享元,共享的享,就比较好理解了。享元模式,就是共享、重用一些现成的对象,免得构造太多,消耗资源巨大...
  •  vue是替代了,原先 js (也量级语言) 和 JQ 代码书写是需要一次次的插入节点和声明,vue书写是把视图与数据直接同步起来存入你要写的库里,vue插件更是可以快速入手,vue第三方插件:PC端:比如(element-UI)...
  • 通常情况下,你一定知道IPFS后面会跟着一个专业名词“分布式存储”,也许你可能会去了解分布式存储是啥,但是,你是否真的知道原因,就是为什么世界需要“分布式存储技术”? “分布式存储”最重要的两个基石就是...
  • 浅谈集群系统设计方案概述集群服务器 概述 开发过集群系统的小伙伴都应该知道,...一直在思考,什么是云服务,什么是云服务器,什么又是云平台? 是不是我们基于阿里云的服务器搭建的系统就云系统呢?这是大多数的...
  • 深度学习网络一般量级都很大,包含数百个层级,这也是为什么叫“深度”学习网络。你可以像在上个 notebook 展示的一样,仅使用权重矩阵构建深度网络,但是这通常很繁琐并且不好实施。PyTorch 有一个很方便的模块 nn...
  • myeclipse开发spring实例

    千次阅读 2005-11-29 23:33:00
    现在很流行的一个框架,天天在网上抄作,据说是可以取代“重”量级的容器EJB,其实之前我也写...为了比较EJB和without EJB也就是找到为什么spring“轻”量级容器,我做了一些实验,其中一个实验就是写一个简单spring
  • Why is it 42?

    2009-03-08 18:10:21
    很久以前,上海有家超轻量级的外企起名42network。“network”是.net时代典型的IT公司名字,这个“42”却又是什么典故呢?一直不得其解。 最近偶然看到关于Douglas Adams的文章,才知道“42”来源于...
  • 前言 接口的常用用法都有什么?策略模式复习总结的话题提起了...换言之,可以使用享元模式来减少对象的数量,享元模式它的英文名字 Flyweigh 模式,翻译为羽量级(搏击比赛的术语,也就是轻量级的体现)模式,它...
  • 甚至某些UGC平台的小编、直播平台的审核员,也用户运营。所以大家很糊涂,到底什么才是用户运营?用户运营到底是做什么的?想弄清这个问题,你需要从种种琐碎的执行工作里跳出来,切换到老板视角,重新审视用户...
  • CPU在单位时间内(同一时间)能一次处理的二进制数的位数字长。需要注意一点,CPU的字长和具体的机器相关,比如对于32位系统,表明当前CPU的字长是32位,即CPU可以同时处理32位数据。 CPU字(Word)和比特(Bit)...
  • 字节对齐学习

    2017-04-21 23:04:28
    CPU在单位时间内(同一时间)能一次处理的二进制数的位数字长。需要注意一点,CPU的字长和具体的机器相关,比如对于32位系统,表明当前CPU的字长是32位,即CPU可以同时处理32位数据。 CPU字(Word)和比特(Bit)...
  • 常见的标准化方法

    2019-06-27 09:05:02
    1 什么是数据标准化(Normalization) 将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行...
  • 提到工作流很多人就会想到OA,的确OA就是典型的工作流的应用,但是工作流并不仅仅局限于OA,工作流应该算是...为什么叫微型工作流引擎?就是超轻量级,以方便在项目中轻便的使用,比如只有一个类库dll,大小也就几百k到
  • N-gram模型

    千次阅读 2020-03-09 13:34:00
    什么是N-gram? 为了解决自由参数数目过多的问题,引入了马尔科夫假设:随意一个词出现的概率只与它前面出现的有限的n个词有关。基于上述假设的统计语言模型被称为N-gram语言模型,也n元文法模型。 关于N的取值...
  • 基础数据结构和算法

    2021-02-01 11:07:09
    跑代码,通过统计,监控得到执行时间和占用内存,为什么还要做时间、空间复杂度分析呢? 有局限性:1,依赖环境2,受数据规模影响大 大O表示法 大 O 时间复杂度实际上并不具体表示代码真正的执行时间,而是表示...
  • 时间空间复杂度

    2020-07-29 21:12:04
    1.什么是时间复杂度 代码执行时间随数据规模增长的变化趋势,所以,也作渐进时间复杂度(asymptotic time complexity),简称时间复杂度。 2.时间复杂度分析 1)只关注循环执行次数最多的一段代码,我们在分析一...
  • 算法系列第二站是枚举,也穷举和暴力破解法,和名字一样,简单直接,一起来看看吧 一,什么是穷举 在进行归纳推理时,如果逐个考察了某类事件的所有可能情况,因而得出一般结论,那么这结论是可靠的,这种归纳方法...
  • 2019数据运营思维导图

    2019-03-29 21:34:09
    平均同时在线人数、最高同时在线人数和时间 每小时注册用户数 用户在什么节点来的多,需要重点监控该时间段app运行 用户画像 概述 是什么,有什么用,怎么做 构建用户画像的核心工作即是给用户贴“标签”,而标签是...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

什么叫量级