文章类型: 排序方式:
阿里云北上深等地访问异常,约2小时后修复
11月27日晚间,阿里云针对部分地域云数据库控制台访问异常一事,向客户发布事件进展声明。据悉,11月27日 09:16 起,阿里云监控发现北京、上海、杭州、深圳、青岛 、香港以及美东、美西地域的数据库产品(RDS、PolarDB、Redis等)的控制台和OpenAPI访问出现异常,实例运行不受影响。经过工程师紧急处理,访问异常问题已于当日10:58恢复。
谷歌发起数据云联盟:Databricks、Fivetran、Redis等在列
Google Cloud 刚刚发起了名为“Data Cloud Alliance”的新联盟,并且吸引了埃森哲(Accenture)、Confluent、Databricks、Dataiku、德勤(Deloitte)、Elastic、Fivetran、MongoDB、Neo4j、Redis 和 Starburst 等知名企业加盟。可知数据云联盟的使命是“让数据在不同的业务系统、平台和环境中更加可移植和可访问”,确保数据访问永远不会成为向数字化转型的一个障碍类型。
十年发展终成熟:Redis Labs宣布公司正式更名为Redis
经历十年的发展,Redis Labs 现已正式将公司更名为 Redis 。通过删除“Labs”一词,其表示这一变化标志着该公司和 Redis 开源项目的成熟。据悉,该项目于 2011 年其接受贡献、并于 2015 年得到赞助。
微软宣布Azure Cache上的Redis Enterprise功能预览
早在今年五月,微软就宣布和 Redis Labs 达成了一项重要合作,以将该公司的技术与 Azure 云服务原生集成。作为合作的一部分,Redis Enterprise 现已能够作为 Azure Redis 缓存的两个新层来使用(Enterprise 和 Enterprise Flash)。功能方面,其支持区域冗余复制(可用性提升 99%),此外 Redis on Flash 能够让 NVMe 固态存储上的缓存大小增至十倍。访问:天猫双11领券入口 京东双十一领券入口
Redis 作者辞去 Redis 项目的领导者和维护者职务
Redis 作者 antirez 在博客公布了从 Redis 项目辞职的消息,将不再担任 Redis 项目的领导者和维护者。antirez 选择将 Redis 交给 Redis 社区打理,并邀请到了两位同事 Yossi Gottlieb 和 Oran Agra 继续维护 Redis 项目。而他将成为 Redis Labs 顾问委员会的一员,会为 Redis 的更多发展可能性输出自己的想法。
微软与 Redis Labs 达成合作,以改善Redis的Azure缓存
在 RedisConf 2020 Takeaway 上,Redis Labs 宣布与微软达成新的战略协议,以将 Redis Enterprise 作为 Microsoft Azure 缓存上的集成托管服务交付。
Redis 6.0.0 GA 稳定版本发布
Redis 创始人宣布 Redis 6.0.0 稳定版正式 GA。从首个 RC 版本到正式 GA 经历了四个月左右的时间,正如 Redis 作者 antirez 所说,这是迄今最“企业”化的版本(SSL 与 ACL 等特性与企业极相关),也是最大的版本,同时也是参与人数最多的版本。GA 版本除了比 RC1 更稳定,还对部分功能进行了重新设计或是进一步的改进。重要的新特性已在 RC1 中公布过:
Google Cloud开测Memystorore分布式缓存服务
谷歌云平台今日发布了一项名叫 Memystorore 的新服务的 Beta 测试,作为一款与开源的 Memcached 分布式缓存技术兼容的产品,其提供了完全可管理的内存内数据存储。同一家族中其它比较知名的产品,还包括 2018 年首次推出的 Redis 。
Redis 官网昨日宕机,错误提示为无法连接 Redis
Redis 官网 redis.io 昨日罕见地宕机了一段时间。宕机原本不是什么新鲜事,但戏剧性的是网站的报错信息居然是连接不上 Redis。Redis 作者 Antirez 很快修复了问题,并解释了宕机的原因。
在线办公的疯狂一夜
前言:不可否认,开工这几天,已成为在线办公服务商们的“双十一”,仅钉钉的流量就遭遇了十几倍的暴涨。随着钉钉在2月3日通过阿里云紧急扩容1万台服务器后、4日再度扩容1万台云服务器,其流量大考还将继续。企业微信、腾讯会议、华为云WeLink们都还扛得住么?契机之下,雷锋网(公众号:雷锋网)独家对话了这些在线办公服务商的技术团队以及背后的云厂商,还原“集体崩溃”后紧急扩容的“疯狂一夜”。2月3日上午9时许,谁都没有预料到,阿里钉钉、企业微信集体遭遇开工视频即崩溃的消息突然出现,网络上满屏都是使用者的吐槽。“卡顿?延迟?消息发不出去?不不,这是不应该存在的。”显然,由于受疫情影响无法正常运转,企业用户对在线办公系统提出了更高的要求。许多人深刻意识到,流量暴增带来的云服务器宕机问题严重性,还是在此前的微博“明星热搜”时代。尽管服务商随后紧急对云服务器进行扩容,但这场上亿人同时协作的流量高峰还是让整个在线办公服务商有些超出预想。实际上,从正月开始,国内数十家在线办公服务商就已经进行了免费开放、扩容等调整,激发了用户数量和视频并发量的不断上涨,基于PC端、移动端的视频调用服务器性能和稳定性正经受非常大的考验。如果未来这种紧急时刻的流量暴增成为常态,那云服务器宕机就决不能成为常态。暴涨的用户量远程办公有多火?据钉钉透露,开工首日,全国就有上千万企业、近2亿人开启在家办公模式,“跟双11之于平时差不多,暴涨十几倍”。据了解,钉钉将免费视频会议全量升级至302方免费。这一天,企业微信平台上也同时涌入了数百万企业,是去年同期的3倍,数千万用户使用企业微信远程办公,同时几十万场会议在企业微信召开。这种势头也带动了年前刚开放的华为云WeLink。数据显示,WeLink每日新注册企业数增长50%,每日会议数增长100%;春节期间新增企业数数十万,新增日活用户数超100万,业务流量增长50倍。金山办公旗下WPS+也免费提供了远程办公及音频会议服务,从正月初一开始用户就开始快速增长。“截止目前,金山文档的协作用户增长超过400%,表单、会议等场景化服务增长超过15倍,企业用户入住增长超过300%。”而小鱼易连也承诺直到疫情结束,将免费开放100方的实时在线会议服务。城云云际则另辟蹊径,在开工前两天,使用抖音快手微视推送免费开放100方云视频会议消息,导致了用户使用量激增。“2月3日当天,数千会议同时召开,万级的参会者使用云际会议开会,这给原来我们以视频会议室为主的模式带来较大挑战。”阿里钉钉视频美颜需求过旺,2天扩容2万台云服务器简单来说,开工第一天,钉钉遇到了相当于微博上3个明星同时官宣恋情的流量。尽管提前有所准备,但还是有点始料未及。3号当天早上9点的流量确实有点超出想象,但在紧急调整之后,就稳定下来了。预案,其实是一切按计划在走。紧接着当天中午时分,阿里云放出消息,2小时内紧急扩容1万台服务器。但这并不意味着钉钉后台的压力就完全没有了,相反,一场大考才刚刚拉开帷幕。4日,钉钉再度通过阿里云扩容1万台云服务器,以应对群直播和语音视频会议的流量洪峰,原来,能够坚持洗头、洗脸、化妆的人数较少,导致视频会议美颜功能需求激增。扩容是按每天的用量来预估的,现在每天都是暴涨流量,要根据每天增长的情况进行扩容;对阿里云来说,扩1万台和扩2万台,用的时间是一样的。如今,钉钉和阿里云成立专项团队,24小时轮班倒,全力保障平台稳定。企业微信从正月初一就开始扩容,从几十到几百倍如果说此前远程办公只是企业办公的一项充分条件,那么疫情期间的远程协作已经成为一种用户刚需。以云服务本身弹性伸缩能力为支撑,才得以保障高峰突发需求的满足。在延长假期的政策确定后,我们就做了紧急预备方案,但第一天返工高峰期的峰值还是有些超出预期。针对开工当天的突发状况,我们在半个小时内做出了紧急修复。用户远程办公需求很大,并发量进入一个很高的量级,扩容是每天都在做的事情。从正月初一开始,企业微信就一直持续从几十倍到几百倍的扩容。为了满足高并发以支撑用户需求,腾讯云团队提出了两个策略:一是在加入、发起会议重要节点保证用户核心需求,在其他用户使用频率不是很高的功能上灵活变化;二是就近接入,分发到边缘节点,用户可就近获得视频资源。现如今,团队每天晚上都要改代码,进行产品灰度发布和压力测试,以满足第二天用户开会的需求。除了企业微信、腾讯会议,腾讯还提供了像文档、思维导图、代码存储库、云盘等工具,疫情下的用户可能更为集中、流量更为庞大。在资源不够时,乐享可随时调用腾讯云的资源,腾讯乐享技术负责人李立博表示。腾讯TAPD技术负责人杨晓俊则指出,在腾讯云TKE容器弹性伸缩、动态带宽、COS存储自动扩容的能力上,TAPD还对TDSQL、Redis、Socket等服务进行了扩容。华为云WeLink整体功能正常,并未出现崩溃我们预测到由于在家办公的场景下会导致业务量大幅度增加,但实事求是的讲,现在的增长速度超出了我们的预期。业务同样也遇到了浪涌时的拥塞情况,但整体功能正常,并未出现崩溃的问题。核心在于云计算本身的弹性伸缩能力和WeLink分布式的服务架构,得以经受住浪涌业务量的压力。图注:广东省委书记李希在东莞调研疫情与医生用WeLink视频会议截图现在,华为云WeLink可支持最大1000方同时视频会议接入。金山云/WPS+准备了近一倍的冗余都不够用值得一提的是,金山WPS+的云办公系统底层资源由金山云提供,主要支持远程和协同办公过程中涉及的海量文件存储和分发。1月26日(正月初二)WPS+表单服务出现了短暂的反应慢,大概持续了45分钟。主要原因是我们没有预计到过年期间还会有这么高增长,准备了近一倍的冗余都不够用。事发后,团队紧急申请扩容。期间,北京各机房因疫情面临封网,人员进出受控,金山云连夜紧急安排线上存量资源调度,整合北京、上海、广州各地的BGP带宽资源。同时迁移整合线上计算资源,以满足远程办公的业务突发和弹性扩容需求,支持海量文件存储和分发。金山云可一小时内完成扩容,其背后最大的挑战是并发处理能力。从这起事件可以看出,正是因为提前适应了用户激增带来的问题,反而让金山云在2月3日开工当天并未出现太大问题。小鱼易连、城云云际新老客户如何两手抓?尽管多数服务商技术团队对疫情影响下远程办公业务量的增长有所预感,但与现实情况相比,还是有些措手不及。开工上午,曾有用户反馈小鱼易连暂时不能正常运行,可能与免费带来的访问量激增有关。针对当天呼叫量数十倍的增长,我们采取了限流措施,优先保障付费用户群体使用。小鱼易连CEO袁文辉解释。除了紧急扩容、协调数据中心与运营商带宽资源外,城云云际还对用户激增问题进行了强制维护。城云云际提前在多个数据中心进行扩容,对老客户与新增客户正常使用进行保障———我们先后做了两项重要工作:一是为新用户制作了快速入会的短视频指南;二是在紧急扩容的同时,也在引导部分企业客户使用电话、语音会议等功能。图注:温州医科大学附属医院使用城云云际会议流量激增背后整体来看,其实在全国多数企业复工之前,视频会议的调用量就已经开始上升,尤其以政企疫情工作和在线教育场景最为突出。“最早在疫情开始后,各级政府、医院、卫计委等机关单位,需要一个系统能将各地医院连接起来,用于疫情的管控部署”,小鱼易连告诉雷锋网,“但从正月初一开始,用户量就开始每天翻倍。尤其是教育,用我们的产品做互动教学,特别是针对初高三的学生,这其实是第二波用户。”值得一提的是,早在钉钉对外开放在线直播课堂时,就曾有用户调侃:“就等大家在钉钉群里直播上课,以后把钉钉都搞崩。”不难看出,前后多重用户访问量的叠加冲击,才是最终引爆视频卡顿问题的关键。针对疫情期间用户比较集中的场景上,华为云WeLink也从自身角度进行了说明:“一是政府及卫生主管部门疫情工作布置、信息收集、上传下达,陆续有各地政府部门专门下文使用视频会议进行工作布置和工作协同。二是医疗卫生单位,针对当前非发热病人尽量不去医院就诊情况,开展远程诊疗、家庭病房关怀、医院住院病患进行远程探视等。三是学校,针对学生进行健康打卡、在线学习、知识推送等,停课不停学。四是大企业,利用最大支持1000方并发会议接入进行工作布置,人虽然不能在一起,但企业还要做好应对后续业务开展的准备。”例如,钉钉为甘肃疫情联防联控进行部署,企业微信提供的在线问诊、在线教育群直播服务,城云云际为浙江大学、温州医科大学提供视频会议系统。这或许也是当前在线办公企业在提供视频会议服务时所面临的共同考量。采访中,类似的说法被不同的服务商或多或少地提及。线上能否成为未来企业办公的主流方式?疫情终会过去,在线办公市场最终会迎来什么样的变化?其实,经历了紧急扩容的疯狂一夜,云作为底层资源的重要性被更加凸显出来,基于云的在线办公正打开行业的新局面。你心中,谁又将是这场赛跑的获胜者?
金山云新春特惠,1核2G服务器最低255元/年
金山云新春特惠来袭,1月15日至2月14日期间,针对企业用户,金山云推出了一些列促销优惠,基础型E1服务器1核/2G/1M售价255元/年。新用户注册立领6000元优惠大礼包。另外,企业用户消费满10万元,即送苹果iPhone 11 Pro 256GB一台。活动地址:http://t.cn/A6vo5wM4(可复制到浏览器打开)金山云新春活动期间,新购满10万元即可获赠苹果iPhone 11 Pro 256GB手机一台,满1万元可获赠小米平板4 64GB一台,满8000元可获赠乐高玩具一套,满5000元可获赠小米蓝牙耳机(K歌版)一个,满3000元可获赠小米手环4一个,满1000元可获赠绿联无线充电器一个。产品方面,金山云KEC云服务器基础型E1 1核/2G/1M配置1年售价为255元,通用型N2 1核/2G/1M配置一年售价为360元。除了云服务器产品有优惠外,金山云Redis云数据库、KRDS数据库以及EPC云物理主机均有相应的优惠。除了服务器产品,各类资源包金山云同样有一定力度促销,1万条短信资源包2年售价360元。更多优惠可以关注金山云1月15日至2月14日期间的活动。活动地址:http://t.cn/A6vo5wM4(可复制到浏览器打开)
DB-Engines 2019:MySQL 获得“年度数据库”称号
全球知名的数据库流行度排行榜网站DB-Engines 宣布,在过去的一年里,MySQL在 DB-Engines排名中比其他350个受监测数据库管理系统的任何一个更受欢迎。因此,MySQL为2019年的年度DBMS。计算结果基于当前最新的分数(2020年1月)和2019年1月的分数差值获得。最终的结果代表了一个产品在2019 年的受欢迎程度。DB-Engines表示之所以采用分数而不是百分比作为评估的维度,是为了照顾在开始时受欢迎程度不太高的系统。年度DBMS:MySQL25年前,当 Michael "Monty" Widenius 和其他人开始合作开发供个人使用的MySQL时,最成功的开源项目之一便开始了书写它的历史。作为用于Web开发的LAMP技术栈的原始基础成员,MySQL迅速成为许多开发人员首选的DBMS解决方案。然而事情在Sun于2008年收购MySQL时出现了变化,因为人们担心这个被大型商业公司控制的开源项目的未来。两年后,甲骨文再将Sun收购时,许多人甚至认为这是MySQL的没落。他们觉得甲骨文为什么要冒着被MySQL蚕食其商业DBMS市场份额的风险来继续支持MySQL的开发。为此,MySQL创始人 Monty Widenius创建了MySQL的一个分支—— MariaDB。是的,他也认为MySQL的未来似乎并不确定。然而,甲骨文的举动却出乎了很多人的意料,甚至做得比预期中的要好。甲骨文不但创建了MySQL企业版,同时仍提供了非常有竞争力的开源社区版。MySQL 8.0于2018年发布,带来了显着的速度改进以及对NoSQL文档存储和JSON的支持。虽然最终结果是MySQL的直接竞争对手MariaDB和PostgreSQL取得了成功,不过它仍然受到大家的欢迎。亚军:Oracle过去的8年里,Oracle的人气排名起起落落。也是在那段时间里,虽然它的人气得分有所下降,不够依然是2015年的年度DBMS。到了2019年,它再次取得不俗的成绩。尽管竞争十分激烈,Oracle仍然是DB-Engines排行榜中排名最高的DBMS。Gartner的几份报告也证实了Oracle的领先地位,该报告表明Oracle在多个类别中均是排名第一的DBMS,其内部竞争对手MySQL的成功并没有改变这一点。季军:Microsoft SQL Server与Oracle类似,Microsoft SQL Server也拿过年度DBMS的称号,它是2016年的年度DBMS,并在2019年拥有十分高的受欢迎程度。SQLServer在2013年的几个月里都是排名第二,与此同时MySQL则已失去了这一位置。多年来Microsoft SQL Server也一直是无可争议的TOP 3 DBMS。。即便微软还在其Azure平台上提供了许多非常成功的基于云的DBMS,但 SQL Server暂时仍是其旗舰产品。结论对于今年的数据,DB-Engines也给出他们的理解和分析。以下内容代表DB-Engines的观点。TOP 3数据库同时也是最受欢迎的数据库,它们也恰好都是十分成熟的关系数据库(RDBMS)。这对于DBMS市场有什么启示?是否标志着 NoSQL 数据库的没落?DB-Engines对此观点并不同意,原因有二。第一,在DB-Engines排名的前十名中有非常成功的NoSQL数据库系统,而且它们仍在逐年流行:MongoDB, Elasticsearch 和 Redis。而在前十之外也还有许多NoSQL数据库系统保持着良好的表现。第二,多年来,最成功的关系数据库通过合并越来越多的NoSQL功能而发生了相当大的变化。譬如TOP 3数据库均支持采用文档存储(Document Store)数据模型作为辅助模型,Oracle和SQL Server也支持图数据库(Graph DBMS)模型。这就意味着它们的边界早已远远超出了传统关系数据库的范畴。举个例子,如果在我们的数据库系统中需要某种灵活性时,无需再切换到专用的NoSQL DBMS,则只需使用RDBMS的某些扩展功能便可得以兼全。只要有需求,NoSQL就不会消失,因为它已经成为主流。但是另一方面,诸如  MongoDB, Elasticsearch 和Redis之类的系统仍在提供大量的专用功能和特性,以确保自身不会很快过时。历年DB-Engines DBMS年度最佳获奖者:最后,我们看看DB-Engines数据库流行度排行榜的1月份数据,排名前二十如下:TOP 10数据库的趋势变化如下:其他方面的变动,以及完整排名请查看 https://db-engines.com/en/ranking。每种类型的数据库排名情况如下:关系数据库前10名Key-Value数据库前10名文档数据库前10名图数据库前10名时序数据库前10名DB-Engines根据受欢迎程度对数据库管理系统进行排名,排名每月更新一次。排名的数据依据5个不同的指标:Google以及Bing搜索引擎的关键字搜索数量Google Trends的搜索数量Indeed网站中的职位搜索量LinkedIn中提到关键字的个人资料数Stackoverflow上相关的问题和关注者数量这份榜单分析旨在为数据库相关从业人员提供一个技术方向的参考,其中涉及到的排名情况并非基于产品的技术先进程度或市场占有率等因素。无论排名先后,选择适合与企业业务需求相比配的技术才是最重要的。
Linux 与开源的统治地位:微软不再“邪恶”
2019年,Linux与开源疯狂发展,ZDNet专栏作者 Steven J. Vaughan-Nichols 梳理了 5个年度大事件,从中我们可以看出来技术的未来还是属于Linux和开源软件的。1、IBM以340亿美元收购Red Hat排名第一的是 IBM收购Red Hat,这是有史以来最大的软件公司收购。IBM希望通过收购Red Hat,将Red Hat开放式混合云技术的强大功能和灵活性与IBM创新和行业专业知识的规模和深度相结合,共同推出下一代混合多云平台,该平台基于Linux和Kubernetes等开源技术,允许企业在本地以及私有和多个公共云上安全地部署、运行和管理数据与应用。这笔收购也意味着:目前世界领先的Linux公司现在属于《财富》500强中排名第34的公司。2、云运行在开源软件上十年前,云更多地是营销热,而没有落地。如今,IDC 表示,全球IT支出中有三分之一以上都在云上。展望未来,Gartner 预测,到2021年,将有一半的全球企业全部进入云计算。而云,大多数运行在 Linux上,甚至Microsoft Azure现在也承认 Linux运行了Azure工作负载的50%以上。而在Linux之上,绝大多数云服务都在开源程序上运行。3、云与开源MariaDB 首席执行官Michael Howard总结了云与开源近来的冲突局面,他指出,大型私有云公司正在大量开采开源技术和公司,而且使用的是粗暴的露天开采方式。但是,云与开源的冲突其实与贫穷的小型开源DBMS公司(例如Elastic、MariaDB和Redis)无关,正是风险资本家在支持这些DBMS业务的高速增长。简而言之,这是大企业之间的一场战斗,开源软件只是碰巧处在其中。4、云、Kubernetes与容器无论在云上运行什么程序,都可能是在容器中。尽管 Docker式微,但它易于使用的容器技术主导了IT。在人们如何管理这些容器方面,容器编排软件 Kubernetes 淹没了所有其它管理工具。目前所有主要的公有云供应商、所有主要的IT供应商(HPE、IBM与VMware等)都使用 Kubernetes,而Kubernetes是开源的。5、微软是一家开源公司邪恶帝国不再那么邪恶了。2019年,微软抛弃了其专有的Edge浏览器,转而使用基于Chromium的新开源版本。它还在桌面Linux上发布Teams组件程序,同时还强烈暗示,其余的Office将在Linux上出现。微软现在还拥有自己的Linux发行版,即 Windows SubSystem for Linux 2.0(WSL),可与Windows 10协同运行。换句话说,正如 Linus Torvalds所说:“整个反微软有时只是个笑话而有趣……今天,它们实际上更加友好。我与微软工程师在各种会议上交流,我觉得是的,他们已经改变了,工程师们很高兴,他们真的很高兴在Linux上工作。因此,我完全驳斥了所有反微软的东西。”文章作者Steven 总结,如今除了Apple和Windows台式机外,其它所有环境都使用开源软件。而且,正如我们已经看到的那样,甚至Windows现在也越来越多地使用Linux和开源代码。2020年 Linux和开源软件将统治一切。
Redis 6 RC1 发布:SSL、ACL、RESP3、客户端缓存与集群代理等
Redis 6 RC1 发布了,项目创建人 antirez 在博客中介绍,这是迄今最“企业”化的版本(SSL 与 ACL 等特性与企业极相关),也是最大的版本,同时也是参与人数最多的版本。GA 版本预计在明年三月到五月之间发布。
开源彻底改变了世界,但需要关注这5件事
“开源软件彻底改变了公司的运作方式,但是像AWS这样的云软件使开源软件公司更难赚钱。当你可以获得基于开源软件的云服务时,那么就不用再为该开源软件的公司支付相关服务费用。”techrepublic专栏作家 Tom Merritt 指出了这个观点,他认为云厂商正在压缩开源商业化公司的重要收益空间,使它们连提供服务(比如技术支持)赚钱的模式都难以维持。Tom认为在这个过程中有 5件关于云和开源的事项需要注意:开源许可证旨在防止代码被锁定。开源许可证建立在这样一个思想之上:如果使用开源代码,就不能对其进行专有化,这是为了确保公司与希望使用该代码的其他所有人共享该代码的工作。提供支持模式行不通。尽管红帽通过支持产品成功建立了业务,但现在主流模式是提供运行开源软件的云服务,这样的营利也更加可观,但问题是 AWS、Google Cloud与 Microsoft Azure目前已经瓜分了这块业务。开源许可证约束不到云服务。云服务不会使用开放源代码创建新项目,而只是将其作为服务的一部分为客户实施。这并不违反许可,因为确实可以使用开源软件来建立业务。一些开源软件提供商正在寻求专有许可证。 MongoDB 创建了服务器端公共许可证(Server Side Public License,SSPL),该许可证要求托管MongoDB实例的云厂商要么获取商业许可证要么向社区开放其服务源码。实际上,Redis Labs 已经修改了某些模块的许可证,新许可限制了可以使用它们构建哪种类型的应用。专有将导致分叉。 XFree86被 X.Org替代,OpenOffice被LibreOffice替代。Redis更改许可证之后,受限制的模块也已经新启动了项目:GoodFORM。
开源界大事件盘点!微软真爱Linux,华为方舟鸿蒙加入,MongoDB与云厂商大战
开源发展到当前的阶段,已然成为各个公司的必争之地,大小公司都在举力搞开源,我们观察了一下今年在这个潮流中最受关注的几家公司,发现了一些事情。微软、华为与MongoDB在开源上似乎各有各的出发点,是胸怀天下开发者,还是无奈反击绝地求生,亦或是一心想着钱?而在这个过程中,三家公司的际遇却又大不相同,有人一路顺风顺水,直接从不良少年变成了开源三好学生;有人顶着家国重担,同时还要面对巨大的舆论压力;还有人直接参与了一场前所未有的开源利益之战。都很精彩(或者残酷),同时也带给我们许多思考,一起来看看。微软微软爱开源!参与开源,这是近两年来微软在走的路线,并且在2019年,它甚至直接在Windows中安上了一颗Linux内脏。微软的这颗Linux内脏其实是今年5月份在Windows 10上推出的全新版本WSL(Windows Subsystem for Linux),新版本WSL 2使用了全新的架构,这是一个真正的Linux内核,它改变了Linux二进制文件与Windows和计算机硬件的交互方式。Linux二进制文件使用系统调用来执行许多功能,例如访问文件、请求内存与创建进程等。WSL 1创建了一个转换层,对这些系统调用进行翻译,以允许它们在Windows NT内核上工作。但是,实现所有这些系统调用很有挑战性,导致某些应用程序无法在WSL 1中运行。WSL 2包含自己的Linux内核,它具有完整的系统调用兼容性。所以像Docker等应用都可以正常使用。同时,微软还开源了全新的终端Windows Terminal,这是一个全新的、流行的、功能强大的命令行终端工具。其包含了很多来自社区呼声很高的特性,例如:多Tab支持、富文本、多语言支持、可配置、主题和样式,支持emoji和基于GPU运算的文本渲染等。微软深情拥抱Linux,不可思议!从此以后,人们是这样描述闭源的Windows的:Windows是世界上最好用的Linux桌面发行版。关于拥抱Linux,微软今年还做了一件事,它宣布正在将其exFAT技术添加到Linux内核中。exFAT文件系统目前在整个电子行业中都得到了广泛应用,你平时使用的SD卡和USB闪存驱动等电子产品,多半就使用到了exFAT技术。但是这个专利此前是收费的。微软开放了它的exFAT技术,并且把技术规范公开,这意味着,往后Linux社区可以放心地使用Linux内核中包含的exFAT。另一方面,技术规范文档公开后,开发者可以开发符合要求、可互操作的exFAT实现,促进整条技术链的发展。除了Linux,微软还把参与开源的手握向了Chromium,这是开源界的另一个超级明星项目,基于它开发的Chrome也是Web浏览器的霸主。微软去年年底宣布要给自家的新浏览器Edge换个心脏,今年4月份它终于正式释出了基于Chromium的Edge预览版本。微软在改造自己的Edge的过程中,也将其在业内出了名的浏览器特性带到了Chromium项目中,比如顺滑滚动体验和快速便捷的Windows Hello身份验证、无障碍阅读、高对比度与视频字幕可读性等,俨然成为了Chromium的重要贡献者。而开源编程语言方面,微软也着手深度参与:微软正探索将Rust作为C和C 的安全替代方案。什么情况?那个当初把开源视为毒瘤的微软,现在已经成为了开源界的超级巨星!?这份开源之爱,即是正义!——?真的是正义吗?有些人不这么认为。微软想要做什么呢?有人说他要入侵Linux,还是走“拥抱、扩展再消灭”的老路。在微软宣布开放exFAT技术,参与到Linux内核的消息出来后,有资深媒体人分析:“微软并非以‘和平姿态’进入Linux,它采用了敌对姿态。它对雅虎、诺基亚和Novell采取了同样的做法。”他指出微软现在进入Linux完全是为了将微软的“标准”、API和专有软件推到Linux中,最终目的只是纯粹而简单地要剥削和榨取。我们甚至觉得事情没这么简单。关于微软与开源,整个故事可以讲得很完美,下边来看看。Linux基金会项目OpenDaylight执行总监Neela Jacques在名为《The shift in open source: A new kind of platform war》(开源的转变,新的平台之战)的文章中写道:在技术主宰着世界的今天,平台创造了市场和生态,创造出巨大的价值。此时,如果哪家公司站错平台,那么不论这家公司的技术有多好,市场有多大,销售团队有多强,最终都会被淘汰,前车之鉴包括Nokia、Blackberry、Windows phone、Amazon Fire、Websphere与Cloudstack等。当前开发者领域最大的平台是什么?开源。这是前提。2016年,微软以260亿美元收购了职业社交网站LinkedIn。2018年,微软以75亿美元收购了全球最大源代码托管平台GitHub。2018年,微软开始与自由职业工作平台Upwork开展合作,共同向客户提供企业级自由职业解决方案。有消息指出,此举是微软收购Upwork工作的第一步。微软在干什么?LinkedIn是全球最大的职场社交平台,用户数已超过6.1亿,覆盖全球200多个国家和地区,每个《财富》世界500强公司均有高管加入。GitHub是全球最大的软件源代码托管平台,目前用户3600万,托管仓库超过1亿。Upwork是全球最大的自由职业网站,每年有数百万个职位发布在Upwork上,覆盖专业技能超过5000种。通俗一点来说,Upwork就是一个众包平台,人们在上边接单完成任务,赚取回报。微软收购LinkedIn,可以看作是对“人际关系网”的收购;收购GitHub,外界认为微软开始在大规模地聚集开发者人才,其实收购的是“专业开发者”;如果微软真的收购了Upwork,那它势必将Upwork向全体LinekdIn与GitHub用户开放,形成一整个可持续发展的开发者生态。现在情况是微软手上已经有了LinkedIn这个全球最大的职业社交网络,也有GitHub这个专注于软件开发者的全球最大程序员聚集网络,收购Upwork或者类似的开发变现平台成为了这两大开发者资源网络的不二去向。这很明显,微软在抓住当前最具创造力并且最“平价”的创新源泉——自由与热衷开源的开发者——去建设它全新的开发者生态。那么前边梳理的微软今年在开源上的动作,其实也就不言而喻了。只要把握住了这群开源世界的核心,那么新的开发者生态中“天下英雄皆入吾彀中矣”,到时别说自行车了,微软可以拥有整个软件世界。微软是不是这样想的呢?我们拭目以待。对了,最近微软宣布将于明年举办第一届微软Linux大会——WSLconf,同样让人大跌眼镜。不小心给它打了个广告,微软打钱。华为由中美贸易争端引起,华为被美国封杀,并且蔓延到技术领域。在美国政令下,谷歌开始限制华为使用安卓,微软随后停止华为订单,紧接着,SD卡协会、Wi-Fi联盟、IEEE学术委员会等均撤销华为会员资格(后又接连恢复)。绝地反击,华为宣布将推出自主研发的海思芯片、鸿蒙操作系统与方舟编译器。一时间引起了剧烈的反响,一方面是一种爱国情怀在刺激着全国人民,不管是不是开发者,大家在关系到国家前途的这件大事上都积极参与了进来;另一方面,华为准备祭出的这几个项目,在国内当前技术环境下并没有前例,它们技术上具体是如何实现的?完成得怎么样?有什么样的突破?……这些与技术相关的期待、疑问与质疑在讲究“talk is cheap, show me the code”的开发者圈子中瞬间爆炸。这其中有正面的声音,反面的也不少。在华为一次次骚操作中,人们的质疑一再被打脸,真香定律疯狂应验。拿最近开源的方舟编译器来说,传闻这个编译器华为已经自主研发了10年,但是直到开源出来,华为还是被许多人喷只会画饼:•2009年,华为启动5G基础技术研究的同时,开始创建编译组,第一批海内外研究人员加入;•2013年,华为推出面向基站领域的自研编译器HCC,并正式提出编译器框架构想;•2014年,众多海内外专家加入华为,方舟项目正式启动;•2016年,成立编译器与编程语言实验室;•2017年,方舟编译器上第一个Java程序“Hello World”跑通;•2018年,方舟编译器跑通安卓系统所有后台服务,并成功移植到手机;•2019年,华为方舟编译器开源。其实源码目前已经开放,喷的人也开始换了一些角度。目前方舟编译器开源的是编译器框架部分源码,包括编译器中间表示(IR,Intermediate Representation)与语言编译实现,同时搭配编译器其它二进制组件,实现Java程序到aarch64汇编指令的编译过程。据介绍,一方面,方舟编译器首次在Java领域将虚拟机干掉了,也是软件史上首次将Java/C/C 等混合代码一次编译成机器码直接在手机上运行,告别了Java的JNI额外开销,也告别了虚拟机GC内存回收带来的应用进程掉线,使操作流畅度大幅提升。华为没有透露技术细节上的东西,同时官方也并未透彻说明研发方舟编译器的核心难点在哪里。但是根据方舟专家不闲的介绍,我们了解了一些东西。首先Java本身是“动态语言”,如果要能够在服务器侧做到静态编译,又不能动手裁剪语言的动态能力,就需要IR、运行时、编译器以及编程框架一起修改,同时还要考虑复杂的兼容问题,导致技术方案选型的困难。其次要想提高流畅度,需要提升内存使用效率、提升JNI效率,需要想尽办法控制动态绑定对性能的影响,需要profile上有更准确的信息,这是系统工程上的困难。而最为关键是如何提升编译后的代码执行效率,做出一个可以工作的工具不难,难在做出世界顶尖性能。此外,我们国内能做IR设计和内存模型的人才太少了。按照华为的说法,方舟编译器的开源打响了鸿蒙OS开源的第一枪,方舟编译器之上,鸿蒙OS是“第一个适用于所有场景的基于微内核的分布式操作系统”。它可以运行在智能手机、智能扬声器、计算机、智能手表、无线耳塞、汽车与平板电脑上,其支持的RAM大小从千字节到千兆字节不等。此外,鸿蒙最终将支持一系列应用,兼容Linux与Android应用。同时华为还介绍接下来方舟编译器本身也会继续增量开源。此外,根据一些开发者的分析,华为基于方舟编译器的IR层设计,其实上可接入不同编程语言生态、下可接入各种操作系统与硬件平台,而一旦IR层生态建成,更可直接推出自己的语言。这样软件王国四大明珠“操作系统、编译器、编程语言与数据库”中三颗都将变成华为的掌上明珠,这在国内还没有先例。基于这些已经引起的全球性的关注以及开源相关计划与事实,我们认为华为今年在开源上的参与程度与影响值得记录与继续期待。另外值得一提的是,最近CNCF发布的Kubernetes历程报告中,我们发现华为高亮出镜:目前在参与贡献Kubernetes的公司中,华为贡献量排在第4位。MongoDB这一小节讲讲今年在开源界名声似乎不怎么样的MongoDB。MongoDB去年10月份宣布将开源License从GNU AGPLv3切换到Server Side Public License(SSPL),以此回应AWS等云厂商将MongoDB以服务的形式(DBaaS)提供给用户而没有回馈开源社区的行为。SSPL明确要求托管MongoDB实例的云厂商要么获取商业许可证要么向社区开放其服务源码。但是开源社区对此有不少反对声音,许多人认为SSPL是具有针对性的,对特定类别的用户具有严重歧视性,这违反了开源的真谛,所以Fedora认定SSPL不是一个自由软件许可,红帽和Debian也宣布从发行版中删除MongoDB,甚至macOS包管理器Homebrew也因为协议问题移除了MongoDB。同时被点名的云厂商中的代表AWS随后推出了一个与MongoDB API兼容的新数据库产品DocumentDB,并将其描述为“一个快速、可扩展且高度可用的文档数据库,旨在与你现有的MongoDB应用和工具兼容”。这摆明了是对MongoDB的反击。为什么单拉MongoDB出来讲呢?因为事情发展到今年,MongoDB其实成为了跑在开源与云厂商斗争最前线的一个卫士,在它的队列中,先后出现了其它知名开源项目的身影:•十分流行的图数据库Neo4j宣布,从Neo4j 3.5版本开始,企业版仅在商业许可下提供,不再提供源代码。•Confluent宣布修改其平台部分组件的开源协议,从Apache 2.0切换到Confluent Community License,新的协议不允许将项目源码作为SaaS产品提供给用户。其背后是知名的流处理平台Kafka的团队,并且此次协议修改影响到KSQL。•Redis Labs的一些模块在半年内相继从AGPL变更为Commons Clause和Apache 2.0组合的开源协议(Apache2 modified with Commons Clause),又变为Redis源码可用协议(Redis Source Available License,RSAL),RSAL要求源码不能集成到数据库产品、缓存引擎、流处理引擎、搜索引擎、索引引擎或者机器学习/深度学习/AI服务引擎。•Cockroach对核心源码的开源协议进行修改,从原本的Apache-2.0协议修改为BSL(Bussiness Source License),该协议要求用户唯一不能做的是在没有取得授权的情况下以商业形式用CockroachDB提供数据库即服务(DBaaS)。•……这些项目陆续修改开源协议甚至直接闭源,都直接把原因指向了云厂商将其能力直接作为一种云环境下的服务赚大钱,而不回馈开源社区。它们不愿意眼睁睁看着云厂商坐收渔翁之利。当前站在这场开源界与云厂商混战中最前线的正是MongoDB,它成了典型代表。且不说各个Linux发行版与工具将它列入黑名单的“英勇就义”,也不说与AWS交锋的几个来回,就看在开源界大佬们也纷纷发声来谴责MongeDB等开源项目针对云厂商修改协议的这种行为,许多人认为它是输家时,MongoDB正面刚了。MongoDB CEO Dev Ittycheria认为不必在意这些看法,他说:“从那以后,我们的业务增长得更快。这没有任何影响,它只影响那些可能在考虑使用我们的免费版本,并将其作为托管服务提供给第三方的人。”这似乎就是要与云厂商斗到底的架势。同时Dev还直言MongoDB开源并不是为了获得帮助,使产品更好,而是作为免费增值策略,以推动采用。不管是为了什么,开源最终还是需要有一个可持续的方式来维持,简单来讲,至少需要可以维持项目正常运营的金钱,而一旦开源项目走了商业化发展道路,那么商场自然也有商场的规则,对于项目所赚钱财的多少则会更加看重,这是开源与云厂商斗争中开源这一方的利益关切。(又或者前边提到的开源项目其实也有利益不相关,纯粹看不惯云厂商的操作的?)另一边,这些被“针对”的云厂商不愿意放弃那一种从开源中得到的精妙的获利方式,不愿意放弃这笔优质的收入。开源与云厂商利益关切本质上不同,并且看起来目前没有较为理想的解决方案;关于谁是谁非的观点其实也明显地分化成了两派——一方面是因为对协议的理解不同,一方面似乎是协议本身不完备,没有明确处理这种案例的内容;同时在这之间还不断有人加入战局,让局势不断往高潮上发展。因此我们认为开源与云厂商的混战还将不断恶化下去,最终收场可能需要倒逼到“开源最上游组织”去重新修改相关约定。注:这里说“开源最上游组织”而不说OSI(Open Source Initiative,开源促进会,定义“开源”与认证开源协议的组织),其实是因为本身华为的事件让人们开始思考开源国界与本质等相关问题,那么最终我们是否需要、会不会重头来过,重新规划开源的这亩田地呢?我们甚至连最终会不会存在一个“开源组织”形态都不能断言。小结不管是华为还是微软,其实公司开源背后的想法都可能不那么“极客”,是不是被动/主动通过开源去建设生态,是不是通过开源最终想要分到一杯什么样的八宝粥只有它们自己知道。MongoDB或许只是勇于把真实想法说出来而已,这反而能让人敬佩。在将这几个代表性公司今年在开源方面的情况梳理了一番之后,回过头来看,这一篇咱们从中美贸易摩擦开始讲到了华为的参与开源,而为什么中美贸易可以影响到开源呢?这其实引发了我们很多思考:开源有没有国界?参与开源是可取的吗?开源的法律问题怎么认定……“华为事件”其实代表了我们关于“开源到底该是怎样的?”的迷思。而勾勒“微软的野望”则是对开源本质的探讨;MongoDB与云厂商之间的斗争则让我们看到了开源生存的困局和处于商业市场下的冲突。这些话题全部杂凑成一锅——关于开源的思考,这个话题我们下次再聊。
在终端禁止广告之后,npm提出给开源开发者捐赠
不久前,Standard JS在项目中实验性内置广告的事件引起广泛讨论的,之后npm公司宣布将禁止此类终端广告行为。根据 The Register 报道,现在npm提出了以Patreon(一个供内容创建者进行群众募资的平台)方式给开源开发者捐赠的想法。npm表示,它打算在今年年底前为开源开发人员开发一个众筹平台。声明发布之前,被修改增加了禁止有“在运行时、安装时或软件开发生命周期的其他阶段显示广告”的软件包。npm公司首席执行官Brian Bogensberger在上周五的一篇博客文章中说到,过去几个月,公司工程师一直在研究注册表基础设施,并表示在9月底能够分享这个框架。npm现已进入一个由Patreon、GitHub Sponsors、OpenGroup和Librapay提供服务的市场,GitHub Sponsors 有开源项目货币化模式,并且它强调了开源和赚钱的真正问题:慷慨。软件开发商Linus Lee在一条推文中写道:“他们只是禁止通过任何方式在进行安装时出现资金提示信息,npm使用它对node.js生态系统的权力,寻找从他们软件包中收益的维护人员”。Eaze首席工程师、npm 前首席技术官CJ Silverio反对了这一计划,她说:npm教会了每个人可以使用软件包管理器免费下载和安装软件,既然如此,现在为什么要付钱呢?Silverio还指出Linux的崛起具有借鉴性,Linux是免费的,所以它的发展比需要花钱的Unix要好,她提出问题:“这个行业会不会出现从免费向付费倒退的情况?”。其实,如果软件开发人员对开源项目的维护是无偿的,并且对公司利用他们的劳动力不在意的话,那么就不会出现倒退。这个问题自开源开发以来就是潜在的。例如,在过去一年左右的时间里,与MongoDB和Redis等开源项目合作的公司,就对亚马孙、谷歌和微软等云平台从开源项目中获利表示不满,因为这些巨头公司并没有补偿开源项目的开发者。个别开源项目维护人员也觉得这不公平,认为他们是在没有金钱资助的情况下继续进行着改进代码的工作。周二,NPM CLI的前技术主管兼架构师,现微软公司旗下的NuGet软件包经理Kat Marchán提出了她的愿景,即使用替代软件许可证(如平价许可证)的支付机制,建立一个更加公平和人道的系统,以解决她所称的开源可持续性危机。在一篇关于dev.to的解释性文章中,Marchán写道:“开源项目的维护人员之所以辛苦,是来自社区带来的压力,使得他们通常只能在业余时间来进行维护工作,可一旦他们试图利用某种模式使项目可持续就会遭到诟病,比如最近基于广告的资金争议”。在 Twitter 上,她写道:我希望能建立这样一个世界:自由软件贡献者和合作者,以及维护人员,因为他们为这些项目投入劳动力后能够获得报酬,这些项目有助于推动我们经济的发展。当前的开源系统需要改进,必须用一个更加公平的系统来取代。
白、黑名单也有冒犯性?微软工程师建议Chromium代码库名单改为allowlist、blocklist
去年有两个知名开源项目—— Redis 和 Python 均因为其代码库包含 master和slave这些被认为具有冒犯性的单词而被要求修改名称。即便这种请求看起来是如此的无理取闹,但开发者最终还是向“政治正确”(局部)妥协了。最近类似的案例又再次上演,双方主角还是科技巨头公司——微软和Google。我们都知道微软已经选择Chromium作为Microsoft Edge的内核并成为积极贡献者。近期,微软的一名工程师向Chromium 提交了一个bug报告,建议清除Chromium代码库中包含潜在冒犯性的单词,以净化代码库。例如,whitelist(白名单)和blacklist(黑名单)这种单词就被认为具有冒犯性,应该从代码库中删除,还被建议修改为allowlist和blocklist。发表此提案的微软工程师表示,这些建议修改的内容是由 PoliCheck扫描得到的,它是一个机器学习模型,可对数百种文件格式进行基于上下文的扫描。而扫描规则遵循微软的多样性和包容性政策。对于微软工程师的一番建议,Google工程师Rick Byers先是表达了“小心翼翼”的欢迎心情,并表示这是一个很好的策略,但他们从来没有打算在代码库中做任何可能具有攻击性的事情。Rick补充道:“我不认为Chrome团队必须为修复这些bug而提升优先级(据我所知,目前还没有看到这对我们的实践造成问题),但如果清理它对微软(或任何其他的 Chromium贡献者)有价值,那么至少在平台代码中,获得必要的代码审查也不会有什么问题。”尽管在源代码中更改注释或变量名称通常对用户是不可见的,但如果它在首选项和设置中出现破坏名称之类的内容,则此类修订可能会出现问题。
中欧PHP开发者大会因多元化争议而取消:完全由白人男性演讲
上周末,原定于10月4日至6日在德国德累斯顿举行的PHP会议PHP Central Europe developer conference (PHP.CE)因多元化争议宣布取消。可以看到,大会主办方在会议首页直言:“The conference has been canceled and won't be continued*. Sorry for the inconvenience.”会议的组织者在两名预定的演讲者发表公开声明(this, this and this post)表示他们今年不参加会议之后,决定取消此次活动,理由是担心缺乏多元化。在 PHP.CE首页我们也留意到,大会主办方特意强调了多元化的重要性:DIVERSITY MATTERS!PHP.CE声称要致力于打造一个尽可能包容的会议,希望展示德国各地的人才,并欢迎国际同行发表看法。此次事件的起因应该是教育咨询公司The Graide Network的首席技术官Karl Hughes,他在推特发文表示,对这次完全由白人男性组成的演讲会议感到失望。随后,PHP开发者Larry Garfield得知了这一情况,并成为最早公开宣布不参加此次会议的人,他曾因特殊的性亚文化癖好(BSDM)而遭到Drupal项目的驱逐。上个月他在博客发文宣布退出今年的 PHP.CE大会,原因是此次大会没有女性演讲者。Larry表示在得知大会没有女性演讲者后,他曾与组织者交涉过,并提出了一些降低成本的可行方案,他的计划是与会议组织者合作,以补贴参会人员的差旅费用,因为他们知道国际旅行的费用可能会阻止妇女和其他代表性不强的群体提交提案,但会议组织者表示他们不接受这样的安排。他们指出今年只有一位女士提交了一份会议提案,并且这份提案与去年在本地会议发表的重复。组织者坚定表示,提案征集阶段已结束,他们现在不愿意接触新人。对于Larry Garfield的退出,会议的一位组织者Dariusz Grzesista回应称,多元化与包容性是值得提倡的目标,但不应该以牺牲演讲质量为代价。随后,开发者Mark Baker也决定退出会议的演讲,理由与Larry Garfield的相似。他认为多元化比发表演讲更重要。这种政治分歧在技术社区早已司空见惯,Node.js、Python、Django、Redis、CouchDB和 LLVM 都处理过与多元化、包容性、冒犯性语言或冒犯行为有关的问题。不过对于此次会议的取消,一部分人认为主要原因不是政治分歧,更有可能是门票销售不佳。
今日新闻:鸿蒙将用于工业;三星新芯片支持 5G 和 AI;Material UI 4.2.1 发布
华为陈黎芳:鸿蒙操作系统主要是工业用途,并非为智能手机设计;中兴5G手机7月23日开售,成为全国首家公开销售5G手机的品牌;大疆回应美国企业CAPE将停止合作:感到失望;中国电信启动12省5G主设备规模招标 ;探探重新上架苹果App Store,网易云音乐、Soul仍处于下架状态 ;谷歌电商项目Google Shopping中国招商已经启动 ;三星量产全新LPDDR5 DRAM芯片,支持5G和AI功能 ;戴尔旗下云计算公司VMware收购AI初创公司Bitfusion ;Material UI 4.2.1发布 ;Redis桌面管理工具Redis Desktop Manager 2019.2发布
2019年7月编程语言榜单公布:Python第一,Java第二但出现下滑趋势
PYPL(PopularitY of Programming Language,编程语言流行指数) 7月份的榜单已发布,目前包含四个排行榜,囊括编程语言、IDE、ODE(Online IDE)以及数据库四大领域。PYPL是非常流行的参考指标,其榜单数据的排名均是根据榜单对象在Google上相关的搜索频率进行统计排名,原始数据来自Google Trends,也就是说某项语言或者某款IDE在Google上搜索频率越高,表示它越受欢迎。如果你相信这些来自众多开发者以及用户的选择,我们可以将PYPL作为一个参考,以帮助决定学习何种语言或IDE,或者在新的软件项目中使用何种语言或数据库。接下来看看PYPL最新的7月份榜单。7月份编程语言排行榜如下:排名前五的分别是:Python, Java, Javascript, C#和PHP。与去年7月份相比,Python的份额保持着较大幅度的增长,也是榜单中增长最多的一个,达到4.4 %,而Java和PHP均有 2.1和 1.1的百分比下降。至于JavaScript和C#,两者均没有明显的波动。纵观整个榜单,份额呈现出明显增长趋势的编程语言包括Kotlin、Go、Rust、Delphi、TypeScript和 C#,出现下降迹象的则有 PHP、Ruby、Visual Basic、Scala、Lua和 Haskell。此外,从全球范围来看,Python目前还是最流行的语言,它的份额在过去5年中增长最多,增长了17.9%。另一边,堪称“霸主”的Java的份额则有了不小的下降,5年来下降了6.7%,由此前的第一名到现在份额被Python远远领先。▲TOP 5编程语言和热门编程语言PYPL指数趋势图接下来看看IDE排行榜:排名前五的分别是:Visual Studio, Android Studio, Eclipse, NetBeans和 IntelliJ。看到这个排名不由得感慨,Java大爷还是你大爷啊。当然“宇宙最强IDE”Visual Studio也不是盖的,一如既往地保持其霸主地位。但目前看来,这个霸主地位快要被 Android Studio抢过去了,两者在7月份的份额分别为21.92 %和21.82 %。Visual Studio Code依旧保持着稳定且迅猛的增长趋势,与去年同比增长 1.2 %。同样保持增长趋势的还有 Android Studio、PyCharm、Xcode、Vim、Emacs、JCreator、Light Table和 Coda 2。数据显示,在全球范围内,虽然Eclipse排名靠前,但近年来其份额已处于下滑趋势,它过去5年的份额下降了18.2%,Visual Studio则是当之无愧最受欢迎的IDE,而Android Studio的份额在过去5年中增长最多,增加了18.4%。▲热门IDE的PYPL指数趋势图继续看看数据库的流行度又是如何,数据库排行榜如下:排名前五的分别是:Oracle, MySQL, SQL Server, PostgreSQL和 MongoDB。▲TOP 5数据库的PYPL指数趋势图数据显示,在全球范围内,Oracle是最受欢迎的数据库,不过也是过去5年份额下降最多的数据库,下降了3.5%;而Firebase的份额则在过去5年中收获了最多的增长,增长了1.8%。其中,MongoDB和PostgreSQL的份额增长最直观易见,两者目前都保持着激烈的上升趋势。除此之外,Redis、SQLite、DB2和Neo4j这些相对小众的数据也保持着增长的趋势。最后看看ODE(Online IDE,在线IDE)。由于在线IDE在国内的流行度不是很高,这里就不细说了,直接看看排行榜:排名前三的分别是:Cloud9, JSFiddle和 Repl.it。
缓存有那么多种,分别是干什么的?
只要是位正儿八经的程序员应该都知道“缓存”是什么,甚至我司的很多做运营的小姐姐现在和程序员小哥哥交流中都时不时冒出“缓存”这个词,让人压力山大。当然,这里讨论的是指软件层面的缓存。大家都知道的一点是,缓存可以让原本打开很慢的页面,变得能“秒开”。你平时访问的App与网站几乎都有涉及到缓存的运用。那么,缓存除了能加速数据的访问之外,还有什么作用呢?另外,任何事物都有两面性,我们如何才能将缓存的优点发挥得淋漓尽致,同时避免掉到它的弊端中呢?本文接下来就给大家分享一下如何理解缓存,以及它的运用思路,希望对你有所启发。缓存能做什么?正如前面所说,大家最普遍的理解就是当我们遇到某个页面打开很慢的时候,会想到引入缓存,这样页面打开就快了。其实快和慢都是相对的,从技术角度来说,缓存之所以快是因为缓存是基于内存去建立的,而内存的读写速度比硬盘快X倍,所以用内存来代替硬盘作为读写的介质自然能大大提高访问数据的速度。这个过程大致是这样的,通过在内存中存储被访问过的数据供后续访问时使用,以此来达到提速的效果。其实除此之外,缓存还有另外2个重要的运用方式:预读取和延迟写。预读取预读取就是预先读取将要载入的数据,也可以称作“缓存预热”,它是在系统中先将硬盘中的一部分数据加载到内存中,然后再对外提供服务。为什么要这样做呢?因为有些系统一旦启动就要面临上千上万的请求进来(在一些toC的项目尤其如此),如果直接让这些请求打到数据库上,非常大的可能是数据库压力暴增,直接被干趴,无法正常响应。为了缓解这个问题,就需要通过“预读取”来解决。可能你会问,哪怕用了缓存还是扛不住呢?那就是做横向扩展 负载均衡的时候到了,这不是本文讨论的内容,有机会再专门分享吧。如果说“预读取”是在“数据出口”加了一道前置的缓冲区的话,那么下面要说的“延迟写”就是在“数据入口”后面加了一道后置的缓冲区。延迟写你可能知道,数据库的写入速度是慢于读取速度的,因为写入的时候有一系列的保证数据准确性的机制。所以,如果想提升写入速度的话,要么做分库分表,要么就是通过缓存来进行一道缓冲,再一次性批量写到磁盘,以此来提速。题外话:由于分库分表对跨表操作以及多条件组合查询的副作用巨大,所以引入它的复杂度远大于引入缓存,我们应当优先考虑引入缓存的方案。那么,通过缓存机制来加速“写”的过程就可以称作“延迟写”,它是预先将需要写入到磁盘或者数据库的数据,暂时写入到内存,然后就返回成功,再定时将内存中的数据批量写入到磁盘。可能你会想,写到内存就认为成功,万一中途出现意外、断电、停机等导致程序异常终止的情况,数据不就丢了吗?是的。所以“延迟写”一般仅用于对数据完整性要求不是那么苛刻的场景,比如点赞数啊、参与用户数啊等等,可以大大缓解对数据库频繁修改所带来的压力。其实在我们熟知的分布式缓存Redis中,其默认运用的持久化机制——RDB,也是这样的思路。在一个成熟的系统中,能够运用到缓存的地方其实并不是一处。下面就来梳理一下我们在哪些地方可以“加缓存”。哪里可以加缓存?在说哪里可以加缓存之前我们先搞清楚一个事情,我们要缓存什么?也就是符合什么特点的数据才需要加缓存?毕竟加缓存是一个额外的成本投入,得物有所值。一般来说你可以用这两个标准来判断:热点数据:被高频访问,如几十次/秒以上静态数据:很少变化,读远大于写,如几天变更一次接下去就可以替它们找到合适的地方加缓存了。缓存的本质是一个“防御性”的机制,而系统之间的数据流转是一个有序的过程,所以,选择在哪里加缓存就相当于选择在一条马路的哪个位置设路障。在这个路障之后的道路都能受到保护,不被车流碾压。那么在以终端用户为起点,系统所用的数据库为终点的这条道路上可以作为缓存设立点的位置大致有以下这些:每个设立点可以挡掉一些流量,最终形成一个漏斗状的拦截效果,以此保护最后面的系统以及最终的数据库。下面简要描述一下每个运用场景以及需要注意的点。浏览器缓存这是离用户最近的可以作为缓存的地方,而且借助的是用户的“资源”(缓存的数据在用户的终端设备上),性价比可谓最好,让用户帮你分担压力。当你打开浏览器的开发者工具,看到from cache或者from memory cache、from disk cache的时候,就意味着这些数据已经被缓存在了用户的终端设备上了,没网的时候也能访问到一部分内容就是这个原因。这个过程是浏览器替我们完成的,一般用于缓存图片、js与css这些资源,我们可以通过Http消息头中的Cache-Control来控制它,具体细节这里就不展开了。此外,js里的全局变量、cookie等运用也属于该范畴。浏览器缓存是在于用户侧的缓存点,所以我们对它的掌控力会比较差,在没有发起新请求的情况下,你无法主动去更新数据。CDN缓存提供CDN服务的服务商,在全国甚至是全球部署着大量的服务器节点(可以叫做“边缘服务器”)。那么将数据分发到这些遍布各地服务器上作为缓存,让用户访问就近的服务器上的缓存数据,就可以起到压力分摊和加速效果。这在toC类型的系统上运用,效果格外显著。但是需要注意的是,由于节点众多,更新缓存数据比较缓慢,一般至少是分钟级别,所以一般仅适用于不经常变动的静态数据。题外话:解决方式也是有的,就是在url后面带个自增数或者唯一标示,如?v=1001。因为不同的url会被视作“新”的数据和文件,被重新create出来。网关(代理)缓存到这里做缓存就是在你自己的地盘了。很多时候我们会在源站前面架一层网关(或者说反向代理、正向代理),为的是做一些安全机制或者作为统一分流策略的入口。同时这里也是做缓存的一个好场所,毕竟网关是“业务无关性”的,它能够拦下来请求,对背后的源站也有很大的受益,减少了大量的CPU运算。常用的网关(代理)缓存有Varnish、Squid与Ngnix。一般情况下,简单的缓存运用场景,用Nginx即可,因为大部分时候我们会用它来做负载均衡,能少引入一个技术就少一份复杂度。如果是大量的小文件可以使用Varnish,而Squid则相对大而全,运用成本也更高一些。进程内缓存可能我们大多数程序员第一次刻意使用缓存的场景就是这个时候。一个请求能走到这里说明它是“业务相关”的,需要经过业务逻辑的运算。也正因为如此,从这里开始对缓存的引入成本比前面3种大大增加,因为对缓存与数据库之间的“数据一致性”要求更高了。进程外缓存这个大家也熟悉,就是Redis与Memcached之类,甚至也可以自己单独写一个程序来专门存放缓存数据,供其它程序远程调用。这里先多说几句关于Redis和Memcached该怎么选择的思路。对资源(cpu、内存等)利用率格外重视的话可以使用Memcached,但程序在使用的时候需要容忍可能发生的数据丢失,因为是纯内存的机制。如果无法容忍这点,并且对资源利用率也比较豪放的话可以使用Redis。而且Redis的数据库结构更多,Memcached只有key-value,更像是一个NoSQL存储。数据库缓存数据库本身是自带缓存模块的,否则也不会叫它内存杀手,基本上你给多少内存就能吃多少。数据库缓存是数据库的内部机制,一般都会给出设置缓存空间大小的配置来让你进行干预。最后,其实磁盘本身也有缓存。所以你会发现,为了让数据能够平稳地写到物理磁盘中真的是一波三折,不知道什么时候可以有“快”到不需要程序来考虑缓存的磁盘出现来拯救我们程序员呢。缓存是银弹吗?可能你会想缓存那么好,那么应该多多益善,只要慢就上缓存来解决?一个事物看上去再好,也有它负面的一面,缓存也有一系列的副作用需要考虑。除了前面提到的“缓存更新”和“缓存与数据的一致性”问题,还有诸如下边的这些问题:缓存雪崩。在大量的请求并发进入时,由于某些原因未起到预期的缓冲效果,哪怕只是很短的一段时间,导致请求全部流转到数据库,造成数据库压力过重。解决它可以通过“加锁排队”或者“缓存时间增加随机值”。缓存穿透。和“缓存雪崩”比较类似,区别是这会持续更长的时间,因为每次“cache miss”后依然无法从数据源加载数据到缓存,导致持续产生“cache miss”。解决它可以通过“布隆过滤器”或者“缓存空对象”。缓存并发。一个缓存Key下的数据被同时set,怎么保证业务的准确性?再加上数据库的话呢?进程内缓存、进程外缓存与数据库三者皆用的情况下呢?用一句话来概括建议的方案是:使用“先DB再缓存”的方式,并且缓存操作用delete而不是set。缓存无底洞。虽然分布式缓存是可以无限横向扩展的,但是,集群下的节点真的是越多越好吗?当然不是,缓存也是符合“边际效应递减”规律的。缓存淘汰。内存总是有限的,如果数据量很大,那么根据具体的场景定制合理的淘汰策略是必不可少的,如LRU、LFU与FIFO等等。所以缓存不是银弹,对缓存的使用也需要先考虑各种问题。总结一下,本文先向你介绍了运用缓存的三种思路,然后梳理了在一个完整的系统中可以设立缓存的几个位置,并且分享了关于浏览器、CDN与网关(代理)等缓存的一些使用经验,没有具体展开来讲细节,只是希望你对缓存有一个更加体系化的认识,希望能让你看得更加全面。
Redis 6将采用全新协议RESP3 以提供客户端缓存功能
Redis 创始人兼核心开发者 antirez 在博客介绍了将在 Redis 6 提供的新功能 —— Client side caching(客户端缓存)。antirez 表示全新的 Redis 协议 RESP3 将是 Redis 6 中最重要的特性,并解释了他为何如此急切地改进 Redis 协议,原因主要有两个,一是因为希望能为客户端提供更多的语义化回复(semantical replies),以开发使用旧协议难以实现的功能;
最新数据库排行:Oracle 分数增长最多 Redis 持续下降
DB-Engines 数据库流行度排行榜 7 月更新已发布,总体排名依旧是没有什么变化,虽然分数基本都有所增加,但可以看到,和去年同时期的相比,今年增加的分数稍显疲软。哪怕是分数增长最多的 Oracle,在 6 月也只是增加了 22.04 分。
Redis 作者 antirez:开源维护者的挣扎
这两天,一篇名为《开源维护者的挣扎》的文章被迅速顶至 Hacker News 首页,这是 Redis 作者 antirez 发布的最新博客。几个月前,一名开源项目的维护者向 antirez 发邮件,倾诉自己苦心维持项目多年,这或多或少带来了一些心理上的负担,因此特来寻求建议。
数据库流行度5月榜发布:PostgreSQL缓慢增长,Redis跌一名
5月3日消息 日前数据库流行度榜单DB-Engines发布了五月份榜单,相比于计算机语言,数据库榜单基本上很多年没有太大的变化,前六名始终是Oracle、MySQL、SQL Server、PostgreSQL、MongoDB以及IBM DB2。前十名的数据库情况中,PostgreSQL缓慢增长0.17,而Redis排名被Elasticsearch超越,不知道Elasticsearch这个势头能不能一直保持下去。SQLite则被 Cassandra挤下到了第11位。在流行度前十名的数据库中,有六个是关系型数据库,这反映出关系型数据库长期的一个霸主地位。但如果跟去年这个时候的数据进行对比,Oracle、MySQL、Microsoft SQL Server 和 IBM Db2的分数均比去年减少,尤其是 Microsoft SQL Server 和 IBM Db2。而 PostgreSQL 和 MongoDB的分数与去年相比,增长幅度非常大,分别为 77.99和 65.96分,这也侧面反映了它们的流行度日渐增加。前十名数据库趋势变化图:关系数据库前10名如下:Key-Value数据库前10名如下:文档数据库前10名如下:图数据库前10名如下:时序数据库前10名如下:
5月数据库排行:PgSQL增长放缓,Redis下跌
DB-Engines 数据库流行度排行榜发布了 5 月份的数据,排名前二十如下:前六名千年不变,分别是:Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB 和 IBM Db2。其中 PostgreSQL 虽然仍保持增长的趋势,不过增加的分数和以前的相比下降了很多 —— 这个月只比上个月增加了 0.17 分。
红帽发布企业开源调查报告:战略重要性、数字化转型和创新
开源技术已被广泛应用于企业中,这一点毋庸置疑。像谷歌和微软这样的科技巨头也承认开源的力量——谷歌云最近与 Elastic、MongoDB、Redis Labs、Neo4j 和Confluent 等公司建立合作伙伴关系便是很好的佐证。但这些企业如何看待开源?为什么选择开源?它们关于开源的下一步打算又是什么?基于以上疑问,红帽发起了“企业开源状态”调查,并于 4 月 16 日发布了调查报告。
4月数据库排行:MySQL 得分强劲 PG 稳步前进
DB-Engines 数据库流行度排行榜发布了 4 月份的数据,毫无意外,前六名依旧是一如既往的稳定,分别为:Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB 和 IBM Db2。Redis 和 Elasticsearch 则各自上升到了第七、八位,Microsoft Access 被挤下到了第九位。