IT英语词汇

灾难恢复(Disaster recovery,也称灾备)

RTO

RPO

Application active-active solution

时间轮算法

场景

如:我们在RPC框架中每个请求肯定都会有超时的设计,那么我们怎么去设计这个超时的机制呢?都会说我们设置定时任务呀,定时多久执行一次,判断请求是否超时,思路可以,但是具体我们怎么实现呢?

方案1:

我们做一个定时任务1S遍历一次请求列表,查看多个请求哪个请求超时了就从列表中删除,当然,这是一种解决方案。 我们来看一下上面这种思路,如果有10个请求的超时时间是1S、5S、10S….30S,我们每次遍历都需要把每个请求都处理一遍才能找到超时的那个任务,那么中间是不是就出现了很多无意义的操作呢? 有什么更高效的方法吗?

方案2:时间轮

带着这个问题我们看看如果用我们的时间轮怎么去处理这个问题。先看一张图。这就像我们平时看到的钟表一样,在时间轮中有时间槽和时钟轮的概念,时间槽就是我们看到的每个槽位,时钟轮就是整个轮盘,也就是一个周期。

 

我们就按照上图事例,将每个任务放到对应的时间槽位上,如:设我们当前时间是0S,有一下3个不同超时时间的请求:2S、4S、10S,那么我们将不同定时任务放到不同的槽位上就得到了如下图的一个结果

我们可以看到不同超时时间的请求被挂在了不同的时间槽上,根据我们的时间走动,我们会找到不同的超时请求接下来我们按照按照这个思路去走一下看看是怎样的一个情况:

当前时间:进入三个请求,分别是2S、4S、10S,分别放到了2、4、10时间槽上

1S:无请求,无需处理

2S:有一个超时的请求,将该请求从列表中清理掉(无需关注其他请求,节省了一次处理其他请求的时间)

4S: 有一个超时请求,将该请求从列表中清理

7S:假设这里有进来一个12S后超时的请求那么我们应该挂在哪呢? 从7往后数12个时间槽是在6那个槽位,我们继续往下走

10S:这里有一个请求,那么我们清理掉

当我们走到12的时候第13秒我们就像时钟一样又回到了0。依次反复。当我们再到6的时候会遇到我们那个12S后超时的那个请求

这里注意【遇到】而不是【找到】,我们只管大胆的往前一步一步的走,当该时间槽上有请求的时候我们处理一下该时间槽上的请求即可,无需刻意去找。(你我的相遇都是上天注定,无法逃脱)

有思想的人会想到如果有多个请求被划分到了同一个时间槽上怎么办呢?那就挂在原来那个请求后面呀,再多呢?那就继续挂呀,其实这里用链表或者红黑树都可以,看你个人的一个选择,但是需要注意的是,这里我们要做一个处理,排序,要保证每个最快到达超时时间的请求放在最上面,这样也是为了将来能节省下来很多的无效遍历。

总结

截止到这里我们再回过头去看看我们的第一个方案,做个比较:总共四个请求

方案一:从0S开始遍历,总共遍历了

前三秒:3 * 3 = 9

4~5: 2 * 2 = 4

6~8: 3 * 1 = 3

9~11:3 * 2 = 6

12~20:9 * 1 = 9

总共是:31次

方案二:从0S开始,在没有请求的时间槽上没有遍历

第2秒一次、第4秒一次、第10秒一次、第20秒一次 
总共4次

时间管理

职业化的时间管理

1. 划分紧急程度和重要程度,先处理最重要且最紧急的事情,例如线上问题。然后是重要且不紧急的事情;

2. 早上到公司或者头一天下班前,总结和制定一天的工作计划和目标,尽可能的详细;

3. 采取分段的方式处理细节事情:例如30分钟处理一件事,然后休息5分钟,如此往复;

4. 如果你在某一个时段状态很好,那么就不要中断去处理其他的事情,把这种状态持续下去;

5. 关闭聊天消息通知,特定的时间专门回复答疑以及查看群消息、邮件;

6. 保持早15~30分钟到公司,提前进入工作状态,这样能把早上精力最充沛的时间利用起来;

mac键盘对应的符号

Mac下常用按键符号⌘(command)、⌥(option)、⇧(shift)、⇪(caps lock)、⌃(control)、↩(return)、⌅(enter)

钢铁侠传

托尼早孤,锐志好学。其父霍华德在时,尝以其寄庠序,尼不知其父有志于国,谓其漠己。公论曰,愈恶一人愈如其人。尼既弱冠,尽能袭承父业。造钛金甲胄匿其内,千里不留行,显达一时,见用于兵部。尝有一姝,别号小辣椒,其德婉贞、淑贤。诗经有言,何彼浓矣,华若桃李,庶几谓之。二人相知,卿卿我我,尼既知世间有爱,遂宥其父,誓曰,孰弑吾亲,必手刃之。
尝有路人问之,人其谓汝“夺命奸贾”,汝如何言?尼对曰,吾制铠仗弓弩,皆为治道,以暴易暴,尔等知否?殄灭苍生,吾耻为之。然觇视诸侯征战,其铠仗致天下流血漂橹,遂戢械以止战,不言兵戎。其叔父欧比僭越,尼忍痛戮之。后为匪所劫,用匪之械,缮为机甲,遂称钢铁侠。且寤之曰,侠之大者,为国为民。与诸天神地祇人间雄杰合盟,名曰复联。联雷神,破洛基,平奥创,寰宇震栗。
先是,悍匪九头蛇以尼父尝与合纵败其主纳粹,悬购天下,以刺客巴基刺之,尼双亲皆亡。此巴基者,尝于二战被执,匪以机巧之术俾其超能,且盲信匪言。后复联征讨仇讎,延及无辜。毙者亲众有泽莫男爵衔之因尼欲知其父死状巧构名辩诓尼如九头蛇穴名曰邀击巴基。尼与巴基战于西伯利亚,巴基挚友美队援巴基。此美队,号罗杰斯,美利坚国雄杰,亦以绝版血清于躯,骨骼奇绝,以其不死之力,是以于复联有威名。其阅六纪而生,盖知尼父死因。然与巴基尝为同袍,知其为匪所挟,刺尼父非己愿,遂协力拒尼。尼惑之,以其忤己,颇生怨望,战之愈疾。方美队利盾碎尼机甲,尼恨曰,还吾父造之盾,汝德不配此盾。
既战,复联反目。会奥丁、伊戈二天神死于非命,寰宇灭霸因之撷取无限宝石者六。复联崩坼久之,虽兄弟阋墙,外御其侮,然战力难以望其项背。灭霸弹指之间,寰宇半数生灵灰飞烟灭。灭霸尝以生灵众多,寰宇难堪重负,此战遂其心愿,遂隐居。其时,尼于泰坦周旋,其亦徒亦友之蜘蛛侠,魂飞于尼怀,尼始知瓦坎达败绩。尼睹其求生之状,怅然无助。
尼与余众昏然于世,小辣椒为其育一女,夫妻相敬如宾,举案齐眉。适蚁人自量子空间复归,睹地球人众离散,悲之。遂与美队诣尼所,进时空穿越说。尼拒之,然心未已,且于几案睹其弟子画像,遽言“彼乎童子,吾将护之”,遂造时空穿越之械,复联余众影从,不复掣肘。穿蜗旋,逾虫洞,于平行空间复取宝石。尼见其生父,其父曰,吾愿为吾子赴汤蹈火,尼始知父爱。不虞灭霸伺间复回,以其众清剿复联,欲寻宝石复其命。尼以机甲手套召既覆之灵魂,复联聚首,勠力同心,且有惊奇队长佐力。奈何灭霸寰宇枭雄,复联之众皆被重创。岌岌之际,间不容发,尼用其械,重组宝石,瞋目怒曰,吾乃钢铁侠。遂倾其意念,力扣响指,但见灭霸及其众已成灰烬。尼耗尽气力,竟卒。
余论曰,余睹托尼,每执夜光杯酒,被绮绣,烨然若神人。其欣然之笑,固恣情纨绔之士;既被机甲,则令吾众肃然。复观其张扬之容,吾已涕泗皆下。及死之日,天下无老幼智愚,知与不知,皆为尽哀。念其“彼乎童子,吾将护之”一言,则吾欣慰;然其护童子,护复联,护苍生,未其护己也。悲哉!壮哉!

ansible

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

Docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器
无论是KVM还是Xen在 docker 看来,都在浪费资源,因为用户需要的是高效运行环境而非OS, GuestOS既浪费资源又难于管理, 更加轻量级的LXC更加灵活和快速。
面对上述几个问题,docker设想是交付运行环境如同海运,OS如同一个货轮,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后一个标准化组件是用户的app)。这也就是基于docker的PaaS产品的原型。
在docker的网站上提到了docker的典型场景:
Automating the packaging and deployment of applications(使应用的打包与部署自动化)
Creation of lightweight, private PAAS environments(创建轻量、私密的PAAS环境)
Automated testing and continuous integration/deployment(实现自动化测试和持续的集成/部署)
Deploying and scaling web apps, databases and backend services(部署与扩展webapp、数据库和后台服务)
Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:
Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用
LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的
隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库
网络管理相对简单,主要是基于namespace隔离
cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)
Docker对disk的管理比较有限
container随着用户进程的停止而销毁,container中的log等用户数据不便收集
针对1-2,有windows base应用的需求的基本可以pass了; 3-5主要是看用户的需求,到底是需要一个container还是一个VM, 同时也决定了docker作为 IaaS 不太可行。
针对6,7虽然是docker本身不支持的功能,但是可以通过其他手段解决(disk quota, mount –bind)。总之,选用container还是vm, 就是在隔离性和资源复用性上做权衡。
另外即便docker 0.7能够支持非AUFS的文件系统,但是由于其功能还不稳定,商业应用或许会存在问题,而AUFS的稳定版需要kernel 3.8, 所以如果想复制dotcloud的成功案例,可能需要考虑升级kernel或者换用ubuntu的server版本(后者提供deb更新)。这也是为什么开源界更倾向于支持ubuntu的原因(kernel版本)

布隆过滤器

布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。
如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn))。不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数据结构。它可以通过一个Hash函数将一个元素映射成一个位阵列(Bit array)中的一个点。这样一来,我们只要看看这个点是不是1就可以知道集合中有没有它了。这就是布隆过滤器的基本思想。
Hash面临的问题就是冲突。假设Hash函数是良好的,如果我们的位阵列长度为m个点,那么如果我们想将冲突率降低到例如 1%, 这个散列表就只能容纳m / 100个元素。显然这就不叫空间效率了(Space-efficient)了。解决方法也简单,就是使用多个Hash,如果它们有一个说元素不在集合中,那肯定就不在。如果它们都说在,虽然也有一定可能性它们在说谎,不过直觉上判断这种事情的概率是比较低的。

类图

类图(Class diagram)由许多(静态)说明性的模型元素(例如类、包和它们之间的关系,这些元素和它们的内容互相连接)组成。类图可以组织在(并且属于)包中,仅显示特定包中的相关内容。
类图(Class diagram)是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。
类图(Class diagram)最基本的元素是类或者接口。

接口
协作
关系
同其他的图一样,类图也可以包含注解和限制。
类图中也可以包含包和子系统,这两者用来将元素的分组。有时候你也可以将类的实例放到类图中。
注:组件图和分布图和类图类似,虽然他们不包含类而是分别包含组件和节点。
为系统词汇建模型
为系统的词汇建模实际上是从词汇表中发现类,发现它的责任。
模型化简单的协作
协作是指一些类、接口和其他的元素一起工作提供一些合作的行为,这些行为不是简单地将元素相加能得到的。例如:当你为一个分布式的系统中的事务处理过程建模型时,你不可能只通过一个类来明白事务是怎样进行的,事实上这个过程的执行涉及到一系列的类的协同工作。使用类图来可视化这些类和他们的关系。
模型化一个逻辑数据库模式
想象模式是概念上设计数据库的蓝图。在很多领域,你将想保存持久性数据到关系数据库或面向对象的数据库。你可以用类图为这些数据库模式建立模型。

(Class)
一般包含3个组成部分。第一个是类名;第二个是属性(attributes);第三个是该类提供的方法( 类的性质可以放在第四部分;如果类中含有内部类,则会出现第五个组成部分)。类名部分是不能省略的,其他组成部分可以省略。
类名书写规范:正体字说明类是可被实例化的,斜体字说明类为抽象类。
属性和方法书写规范:修饰符 [描述信息] 属性、方法名称 [参数] [:返回类型|类型]
属性和方法之前可附加的可见性修饰符:
加号(+)表示public;减号(-)表示private;井号(#)表示protected;省略这些修饰符表示具有package(包)级别的可见性。
如果属性或方法具有下划线,则说明它是静态的。
描述信息使用 << 开头,使用 >> 结尾。
类的性质是由一个属性、一个赋值方法和一个取值方法组成。书写方式和方法类似。

(Package)
包是一种常规用途的组合机制。UML中的一个包直接对应于Java中的一个包。在Java中,一个包可能含有其他包、类或者同时含有这两者。进行建模时,通常使用逻辑性的包,用于对模型进行组织;使用物理性的包,用于转换成系统中的Java包。每个包的名称对这个包进行了惟一性的标识。
接口
(Interface)
接口是一系列操作的集合,它指定了一个类所提供的服务。它直接对应于Java中的一个接口类型。接口的表示有大概两种方式。具体画法见下例:
关系
常见的关系有:继承(Inheritance),关联关系(Association),聚合关系(Aggregation),复合关系(Composition),依赖关系(Dependency),实现关系(Realization/Implementation)。
其中,聚合关系(Aggregation),复合关系(Composition)属于关联关系(Association)。
一般关系表现为继承或实现关系(is a),关联关系表现为变量(has a ),依赖关系表现为函数中的参
类图中的关系表示
类图中的关系表示
数(use a)。
一般化关系:表示为类与类之间的继承关系,接口与接口之间的继承,类对接口的实现关系。
表示方法: 用一个空心箭头+实线,箭头指向父类。或空心箭头+虚线,如果父类是接口。
关联关系:类与类之间的联接,它使一个类知道另一个类的属性和方法。
表示方法:用 实线+箭头, 箭头指向被使用的类。
聚合关系:是关联关系的一种,是强的关联关系。聚合关系是整体和个体的关系。关联关系的两个类处于同一层次上,而聚合关系两个类处于不同的层次,一个是整体,一个是部分。
表示方法:空心菱形+实线+箭头,箭头指向个体。
合成关系:是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期,合成关系不能共享。
表示方法:实心菱形+实线+箭头,
依赖关系:是类与类之间的连接,表示一个类依赖于另一个类的定义。例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。
表示方法:虚线+箭头 箭头指向被依赖的一方,也就是指向局部变量。

医疗行业调查

医渡云:
https://www.yiducloud.com.cn/
医渡云基于自主研发的“医学数据智能平台”,对大规模多源异构医疗数据进行集合和融合,形成患者全生命周期医学数据,可追溯,可监管,并通过数据的深度处理和分析,建立真实世界疾病领域模型,助力医学研究、医疗管理、政府公共决策、创新新药开发、帮助患者实现智能化疾病管理,引领大健康及人工智能产业创新,实现数据智能绿色医疗的新生态。
卓健科技:
http://www.zhuojianchina.com/
杭州卓健信息科技有限公司(卓健科技)顺应医改大方向,抓住医疗核心诊治业务,自内而外为大中型医院及医疗机构提供互联网化解决方案,打造智慧医院生态闭环。卓健科技拥有分级诊疗、互联网医院、移动远程、掌上医院、医链、院后医疗服务系统等六大产品体系,是互联网医疗领域中最具成长性高科技企业。
宜昌模式:
http://www.sohu.com/a/225447528_389045
可以看出加快推进互联网+分级诊疗和医联体建设的战略仍然是今后相当一段时期的医改重点。而本次两会就有多个代表委员的提案和分级诊疗或者医联体息息相关。作为新一届的全国政协委员,搜狗公司CEO王小川带来了两份提案,其中一份提案建议构建新型医联体,打通医疗惠民“最后一公里”,实现每个中国家庭都有家庭医生。而全国政协委员、中国中医科学院望京医院骨科主任温建民则认为建立分级诊疗制度 要以慢病为突破口。
方庄模式:
http://www.sohu.com/a/225224741_374886
让市民和社区卫生服务中心全科大夫“结对子”,绑定信息提供日常就诊服务;对陌生病患的问诊时间要达到15分钟,北京市正在研究医改系统的“方庄模式”,通过引入大数据、人工智能和信息化及多项软性服务,为居民提供更好的健康服务。
经初步统计,2017年,北京市社区卫生服务中心和一级医院就诊人次达到6823.4万,占全北京市总诊疗量的28.57%。和前年同期相比增长约2.32个百分点。“越来越多的百姓习惯到社区和一级医院看病,社区卫生服务中心需要有足够的能力去支撑。”
目前,北京市正在研究医改系统的“方庄模式”,通过引入大数据、人工智能(AI)和信息化等模式及多项软性服务,为老百姓提供日常的就诊和健康服务。对陌生病患的问诊时间要达到15分钟,即使是老病患也要达到8分钟;未来,社区卫生服务中心还可以直接下单,用物流配送将药物直接送到百姓家。
第一届健康智谷高峰论坛:
http://www.sohu.com/a/237261105_139908