- 《写作是最好的投资》
- 我们有没有一个长期坚持的习惯,并且觉得这个习惯挺有价值的?
- 职场,或者说当代社会,最重要的能力是表达能力。
- 会表达的人,是这个时代最大的红利收获者。
- 经典句子
- 科学概念
- 单例模式
- Python知识点
- GIL
- 为什么GIL锁会影响多线程的性能?
- 如何调度?
- 全局解释器锁,什么时候释放?
- 互斥锁和GIL锁的关系
- 未加GIL锁存在的安全隐患(线程安全)
- 总结
- GIL
- 阿里云与华为云
- 性能
- 稳定性
- 价格
- one more thing
- 客户评论
- 趋势
- 阿里专有云 vs HCS IaaS功能层面
- 飞天平台 vs HCS底座
- 阿里运维服务工具框架 vs ManageOne运维体系
- 数据
- 混合云主机容灾分析
- 混合云安全分析
- 边缘计算
- 生态运营
- 为什么是VMware?
- 自我介绍
《写作是最好的投资》
我们有没有一个长期坚持的习惯,并且觉得这个习惯挺有价值的?
写作是利用碎片化时间的最好的方式。
写作是就是打造你个人品牌最好的方式之一。
职场,或者说当代社会,最重要的能力是表达能力。
因为在未来社会,最重要的资产是影响力。影响力怎么构成?有两个能力:第一是写作,第二是演讲。
会表达的人,是这个时代最大的红利收获者。
这年头,会说话的人很多,能写的人太少,不会写作的人,正在失去职场竞争力,无法冲破上升的天花板。
写作本身就是对写作者最好的回馈。至少对三方面有帮助:对世界更敏感,思维更缜密,认知更深刻。
写作时比追求新意更重要的,是诚实。
写作之难,在于把网状的思考,用树状结构,体现在线性展开的语句里。
经典句子
眼光看长远些,等承认内需和出口的确走不通的时候,房地产爆发期才会到。
愿风指引你的道路,愿星辰照亮你前进的方向。
你为一个人自愿地付出越多,不会让对方更依赖你,却会让你更舍不得离开对方。
永远盼着身边的人好。嫉妒不会让你的生活有丝毫改变,能祝福别人的人,才会有机会得到机遇和给予。
- 别人一问起你你就全盘托出,你以为这是健谈和热情,其实,这就是孤独。
- 当你不确定他是不是喜欢你的时候,就是他不喜欢你。
- 你多学一样本事,就少说一句求人的话。
- 一个真正优秀的人会在暗处野蛮生长,在没有人的地方仍自律。
- 什么叫见过世面?是学会尊重,接纳不同。
科学概念
-
集群
计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多。
特点:
- 通过多台计算机完成同一个工作,达到更高的效率
- 两机或多机内容、工作过程等完全一样。如果一台死机,另一台可以起作用
-
分布式
分布式系统是一组计算机,通过网络相互连接传递消息与通信后并协调它们的行为而形成的系统。组件之间彼此进行交互以实现一个共同的目标。
一个业务分拆多个子业务,部署在不同的服务器上(不同的服务器,运行不同的代码,为了同一个目的)
集群和分布式并不冲突,可以有分布式集群
-
SOA
其实我认为分布式/微服务/SOA这三个概念是差不多的,了解了其中的一个,然后将自己的理解往上面套就好了。
-
微服务
- 每个服务高内聚,松耦合,面向接口编程
- 服务间通信成本,数据一致性,多服务运维难度增加,http传输效率不如rpc
-
MQ对比
ActiveMQ:最早的消息队列产品,更新缓慢
RabbitMQ:erlang语言开发,支持很多的协议,非常重量级,更适合于企业级的开发。性能较好,但是不利于做二次开发和维护
RocketMQ:阿里开源的消息中间件,纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点,分布式事物。
ZeroMQ:号称最快的消息队列系统,尤其针对大吞吐量的需求场景,采用 C 语言实现。
消息队列的选型需要根据具体应用需求而定,ZeroMQ 小而美,RabbitMQ 大而稳,Kakfa 和 RocketMQ 快而强劲
-
jre、jdk、jvm的关系
jdk是最小的开发环境,由jre+java工具组成。
jre是java运行的最小环境,由jvm+核心类库组成。
jvm是虚拟机,是java字节码运行的容器,如果只有jvm是无法运行java的,因为缺少了核心类库。
-
fjlsd
单例模式
class Student(object):
__instance = None
def __new__(cls, name, age, sex):
if not cls.__instance:
cls.__instance = object.__new__(cls)
return cls.__instance
class GlobalVars(object):
"""
Singleton class GlobalVars to store and manage global variables.
"""
_instance = None
_var_dict = {}
def __new__(cls, *args, **kw):
"""
Ensure that when creating a new instance, it'll be the only
instance. Otherwise return existing instance.
:param args:
:param kw:
:return: cls._instance
"""
if not cls._instance:
cls._instance = super(GlobalVars, cls).__new__(cls, *args, **kw)
return cls._instance
Python知识点
GIL
为什么GIL锁会影响多线程的性能?
因为在多线程的情况下,只有当线程获得了一个全局锁的时候,那么该线程的代码才能运行,而全局锁只有一个,所以使用python多线程,在同一时刻也只有一个线程在运行,因此在即使在多核的情况下也只能发挥出单核的性能。
正因为解释器锁的原因导致python的多线程说到底还是单线程,每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码。所以就算使用多线程,其实还是一个线程在工作,但是由于在在IO操作等可能会引起阻塞,会暂时释放GIL,执行完毕后,再重新获取GIL,所以在进行IO等操作时的运行速度还是要比单线程速度快。
但是在运行计算密集型的程序时,需要使用CPU进行大量的计算,但由于GIL锁的性质导致程序巡行中始终都是一个CPU进行计算,所以计算速度及其缓慢,运行此类的程序不推荐使用线程,有两种方式解决:
- 使用多进程的方式,避免GIL锁的约束
- 使用其他运行速度较快的语言模块,例如C语言
如何调度?
既然python在同一时刻下只能运行一个线程的代码,那线程之间是如何调度的呢?
- 对于有io操作的线程,当一个线程在做i/o操作的时候,因为i/o操作不需要cpu,所以,这个时候,python会释放python全局锁,这样其他需要运行的线程就会使用该锁。
- 对于计算密集型的线程,比如一个线程可能一直需要使用cpu做计算,那么python中会有一个执行指令的计数器,当一个线程执行了一定数量的指令时,该线程就会停止执行并让出当前的锁,这样其他的线程就可以执行代码了。 当然此处的线程切换不一定就一定会切换到其他线程执行,因为如果当前线程 优先级比较高的话,可能在让出锁以后,又继续获得锁,并优先执行。
全局解释器锁,什么时候释放?
- 在当前线程执行完成时释放
- 在当前线程执行超时后会自动释放
- 在当前线程执行堵塞操作时会自动释放
遇到IO等待会释放GIL。会有一个专门ticks进行计数,一旦ticks达到100时,这个时候释放GIL锁,线程之间开始竞争GIL锁。说明:ticks这个数值可以进行设置来延长或者缩减获得GIL锁的线程使用cpu的时间。
互斥锁和GIL锁的关系
Gil锁 : 保证同一时刻只有一个线程能使用到cpu。
互斥锁:多线程时,保证修改共享数据时进行有序的修改,不会产生数据修改混乱。
未加GIL锁存在的安全隐患(线程安全)
这把锁存在的必要,是因为CPython的内存管理不是线程安全的。对于同一个数据,线程1的处理是使用数据计算,垃圾回收线程的处理是进行回收。因为进行并发执行,存在恰好,线程1在处理数据前,进行了IO操作导致被垃圾回收线程夺取了解释器执行权,则等线程1再次获取权限执行的时候,数据已经被回收。
原因:
- 相同进程内的线程数据共享
- 当CPU处理资源遇到IO操作等会进行权限切换
总结
- GIL本质是一把互斥锁,相当于使用Cpython解释器的权限,默认每一个进程内都存在一把GIL。
- 同一进程内的多个线程必须抢到GIL后才能使用Cpython解释器执行代码。
- 同一个进程下的多个线程无法实现并行,但是可以实现并发。
- 若想要以线程实现并行,则需要开启多个进程实现。
阿里云与华为云
业界主要玩家:阿里云、腾讯云、电信天翼云、AWS、华为云。
阿里占比第一,但华为云增长也很快。
性能
内存带宽上,华为云在Scale、Add以及Triad三项上,内存带宽表现基本上是其他两家的2倍。
华为在存储市场上是非常领先的,特别是企业全闪存领域。
云主机的内网性能中,腾讯云大幅度领先,位列第一 。
稳定性
各家的业务侧重并不一样。传统上,阿里云的主要客户为中小型的客户,特别是互联网客户;腾讯云的优势领域是游戏类客户;华为云更偏重大型政企类的业务关键型客户。
这里面,阿里云的盘子比较大,爆出的问题也比较多。从去年到今年,已经出了不少问题。从SLA的公开承诺来说,这是合理的。但客观的说,一般选择阿里云的企业其实对这种不稳定性的容忍度比较高,毕竟业务规模和云计算负载还没有达到那么大的地步。
腾讯云的客户相对比较固定,只是去年爆出的管理员磁盘操作丢用户数据的事件,也是比较让人头疼。但近期没有看到太多出问题的报道。
华为云的基本盘是大客户,一般稳定性上的要求都比较高。相对来说,华为的产品线比较长,包括服务器、存储、网络等硬件产品方面都有芯片级自研能力和强势的市场地位,服务这类业务关键型客户的经验比较丰富,在稳定性上的考量一直比较多。也正因为此,很多大互联网厂商逐步开始往华为云上迁移,比方说新浪微博。今年华为云也在宣传微博依靠华为云,撑住了明星离婚。目前从公开的报道来看,华为云出现稳定性问题的概率相对小一些。
就成熟度、稳定性还是阿里云强很多,华为云上很多服务都不成熟,功能缺失,不过如果仅仅只是用IAAS层,我觉得区别倒是不大,但是如果要用到其他服务,比如CDN、OSS、大数据、DDOS等一些中间件服务,阿里要好用很多。
华为是IT领域的巨头,但在DT时代,阿里是走在前面的。
价格
从价格上来看,各家其实都差不多。因为IaaS这个产品属于市场上头部玩家之间必争之地,彼此价格战打的非常激烈。真的特别特别在意价格,腾讯云确实比较便宜。毕竟AMD实例的价格,也是低到潜水。如果愿意双十二期间蹲守各家活动,也都能从各家薅到超低价的羊毛,但这个还是看运气。
如果你是大客户,那外面的目录价都就都不用考虑了。毕竟,客户越大,话语权越高。
one more thing
上面说的所有公有云实例,都是基于X86架构。但实际上在业界,多元架构的计算服务正在成为共识,特别是基于ARM架构的云实例。
目前已经公开发布并提供服务的ARM云实例包括AWS的EC2 A1(基于Graviton处理器)和今年re:Invent上发布的EC2 M6g(基于Graviton 2处理器);华为云的KC1实例(基于华为鲲鹏920处理器);金山云的AC1实例(大概率是国产的飞腾处理器)。
从手里的一些评测来看,ARM实例的性能还是不错的(鲲鹏云服务器实战:华为云鲲鹏KC1实例 vs. 阿里云G5实例),特别是在高并发、数据库、大数据、HPC、手机测试、云手机、手机云游戏等场景上有天然的优势。考虑到国内很多大型政企和互联网巨头们都在推进ARM架构的应用,未来在云服务的技术选型上,基于ARM架构的公有云服务也会是很重要的选择之一。
客户评论
华为自研的多,阿里集成的多。
业内都知道阿里云底层是自研的神龙构架,华为云底层是OpenStack改的,华为投入十几个亿没搞出来自研,到底谁是小学生谁是博士,阿里不也有平头哥自研芯片吗,你吹华为好没必要踩其他厂家,腾讯的黑石服务器也挺强,华为云应该排名是第五吧,低于金山云这些,在网络交换机和边缘芯片上华为确实强,在云领域,华为还真是弟中弟,无论在技术成熟度上还是规模上。
openstack不是架构,只是一个虚拟化平台的管理工具,没人会说虚拟机运行在openstack上,实现云计算的基层是底层虚拟化,华为云用的是kvm-qemu软件,阿里云宣传的神龙架构就是将kvm-qemu硬件化,如果非要说亚马逊云、谷歌云、阿里使用kvm依旧属于自研阵营,你是否对华为太双标了呢。
主要都是数据安全性问题,稳定性和可持续发展的问题;华为和阿里巴巴的区别还是一个靠技术设施吃饭,一个是靠数据吃饭,那么对于中小企业的互联网公司如何选择不同的平台,简单来说就是站队。
阿里云可能更加的偏向于企业的服务器需求,但是华为云大多数是政府的服务器需求。
阿里云很早就开始了商业应用,而华为云要晚了几年。
就目前的水准和多年实际成功案例而言,阿里云领先华为云太多。阿里云是自研的,淘宝和天猫就是基于阿里云的,经受了多年实际业务的考验,每年双11的压力都被阿里云一次次都扛下来了。华为云基于开源项目OpenStack,其实也是借OpenStack开源、标准API的特点,来向大型国企和政府来推广,但目前成功案例不多。在同行评价里,阿里云口碑要好些。
趋势
基于安全性/保密性/法律法规等考虑,用户不可能将所有业务都放到公有云上,故用在本地部署私有云。
Cloud2.0时代,云计算开始向传统的企业和政府拓展,他们的需求、痛点更为复杂,也因此对云厂商的产品和服务能力提出了新的更高的要求:
简单的公有云无法满足它们的上云需求,混合云成为大势所趋。
华为优势:大中型政企在数字化转型过程中,华为本身就是做2B行业的,传统企业和政府是它的优势客群,它对这些客群的需求无比清楚。HCS
阿里云快速迭代、美其名曰敏捷式开发。
阿里专有云 vs HCS IaaS功能层面
内部聚合资源、外部聚合生态。
轻量化不足、产品化不足、运维工具化不足、需求落地难
业务中台:中间件产品线丰富,成熟度高;开源生态影响力好
数据中台:行业能力,工具集如数据治理、数据开发、AI模型
不承诺可跨版本平滑升级: HCS升级能力
起步厚重:管理服务资源起步成本高
华为基于私有云交付项目的持续积累、在线下场景的特性满足度上覆盖率更高,也有短板如LB/磁盘加密特性在规划中;阿里也会按需通过项目需求来推动来补齐;
飞天平台 vs HCS底座
IaaS服务:
计算/网络虚拟化:阿里后裔洛神 vs 华为OPS/瑶光
存储虚拟化:阿里盘古 vs 华为FusionStorage/Dorado
公私有云交付场景差异引起,核心在架构设计的标准化、规范化、模块解耦及架构稳定策略,华为在I层有优势,但面临阿里的快速追赶,需继续在I层领先并解决高阶产品化质量问题。
内核架构:针对华为云内核的开源选择,阿里的打击点是针对开源DFX劣势的大规模验证、商用成熟度,防守点是把开源强势的南北向开放兼容性作为自身专有云设计原则。这一点随华为对开源增强和现网叠代积累的成熟度增加,以及内部逐步闭源的策略,在逐步弱化;
混合云能力:当前主要是管理面多云集成,以及混合灾备。从更广的混合云视角,兼顾企业数字化的阶段性过程需考虑客户的业务平滑(BM->虚机->容器微服务的改造、可共存可改造),存量和演进(新老架构含虚拟化的升级、演进、共管),数据平滑(流动迁移)能力
阿里运维服务工具框架 vs ManageOne运维体系
•ManageOne在告警监控、故障定位方面相对有优势,尤其是在底座故障,后续引入高阶云服务也需要加强这方面的能力。
•面向专有云运维场面,阿里提供了相对完整的运维框架,并不强调远程连线运维。
•ManageOne在线服务能力缺失,尤其是移动服务能力缺失,后续建议考虑集成Welink。
阿里优势在于提供统一运维界面,基本覆盖单数据中心所需要的运维能力,对于多个region需要按region切换。ManageOne优势在于多region/多数据中心统一管理,多云监控、两级运维,弱势在于运维功能不全,急需补齐完整运维工具链条。
数据
阿里提供了针对各个行业的端到端大数据解决方案,不仅仅提供了各种能力的服务化,更是把这些服务化能力按照行业特点进行了补充和配合,形成了面向各个行业的端到端数据解决方案。用户使用这些解决方案,可以无盲死角的解决业务问题,充分体现阿里云的整体竞争力。
混合云主机容灾分析
对比项 | 阿里 | 华为 |
---|---|---|
容灾能力 | 秒级RPO,分钟级RTO | 持平 |
容灾管理 | 一键式切换,容灾编排,容灾可视化 | 无 |
自主可控 | 通过浪潮技术产品包装相关服务(自主化规划中) | 全面自研 |
混合云安全分析
阿里云云盾,线下由数梦交付。
边缘计算
•物联网边缘计算:
是阿里云专门为物联网领域开发人员推出的产品,核心价值是将计算扩展至边缘,在离设备最近的位置执行计算,提供软件、硬件边缘接入网管,实现边缘节点(Linux,Windows)和应用(Docker 容器,本地应用)生命周期管理。为边缘应用提供SDK和云端服务。
生态运营
关键项目重点投入,占领制高点
最新发布的专有云敏捷版不容小觑。基于敏捷版,钉钉、云效下沉形成场景化方案面对中小市场,将会对我司存量市场形成巨大冲击。当前HCS混合云存量市场70%为中小规模局点,8.x版本目前无法很好覆盖。疫情加速国内政企数字化转型,HCS6.5.1需要持续演进,经营守护好这部分存量长尾用户。
为什么是VMware?
VMware与我司的混合云战略和站位更类似,即基于虚拟化和私有云存量客户的全栈混合。混合云在VMware业务中的占比持续增加(目前为12.5%),VMware 2019年混合云营收为108亿美元。
虚拟基础架构 -> 软件定义数据中心 -> 混合云平台
业务敏捷,业务创新,业务连续性是混合云三大关键场景,而成本是凌驾于三大关键场景之上的用户核心关切,是决定项目成败的关键。
部署生命周期管理:规格调整、部署删除、资源回收
网络可视化:混合云和多云环境下物理网络、虚拟网络和SD-WAN的可视化
自我介绍
华为云的基本盘是大客户,一般稳定性上的要求都比较高。相对来说,华为的产品线比较长,包括服务器、存储、网络等硬件产品方面都有芯片级自研能力和强势的市场地位,服务这类业务关键型客户的经验比较丰富,在稳定性上的考量一直比较多。也正因为此,很多大互联网厂商逐步开始往华为云上迁移,比方说新浪微博。今年华为云也在宣传微博依靠华为云,撑住了明星离婚。目前从公开的报道来看,华为云出现稳定性问题的概率相对小一些。
就成熟度、稳定性还是阿里云强很多,华为云上很多服务都不成熟,功能缺失,不过如果仅仅只是用IAAS层,我觉得区别倒是不大,但是如果要用到其他服务,比如CDN、OSS、大数据、DDOS等一些中间件服务,阿里要好用很多。
华为是IT领域的巨头,但在DT时代,阿里是走在前面的。
阿里云可能更加的偏向于企业的服务器需求,但是华为云大多数是政府的服务器需求。