首页互联网技术阿里的技术栈

阿里的技术栈

cysgjjcysgjj时间2024-09-10 07:55:38分类互联网技术浏览18
导读:B站后台用什么搭建的,B站用什么开发的,这么大的流量居然那么稳定?Dart做Android开发理想么?B站后台用什么搭建的,B站用什么开发的,这么大的流量居然那么稳定?谢谢邀请!从之前B站泄露出来的代码看,目前B站后台的核心技术栈是Go语言。至于为什么用Go语言后面会说到,事实上B站流量在行业内并不是顶尖,就算是用Go语言作为核心技术……...
  1. B站后台用什么搭建的,B站用什么开发的,这么大的流量居然那么稳定?
  2. Dart做Android开发理想么?

B站后台用什么搭建的,B站用什么开发的,这么大的流量居然那么稳定?

谢谢邀请!

从之前B站泄露出来的代码看,目前B站后台的核心技术栈是Go语言。至于为什么用Go语言后面会说到,事实上B站流量在行业内并不是顶尖,就算是用Go语言作为核心技术栈的网站中,B站也不是技术难度最高的。不过同样值得关注的是,B站对于UP主的保护是全行业最佳,刚刚B站也签下了冯提莫,不断大动作的B站未来发展可期。

比B站技术难度大的网站太多了

放眼全球,比B站技术难度高的网站简直是太多了,相对于这些巨无霸企业,B站本质上依然是一个小众网站,即使在视频网站,B站的技术难度也不是最高。

阿里的技术栈
图片来源网络,侵删)

全球***网站领域,YouTube月活超过了18亿、日活超过了15.3亿,Pornhub日活用户也达到了8000万。国内***网站,爱奇艺的月活达到了5.38亿,腾讯***月活达到了5.33亿,B站月活跃用户仅仅只有9200万,这中间的差距太大了,很明显不是一个数量级的产品

还是***网站,不考虑***网站,太多的网站技术难度都要比B站要高,国内天猫双十一、春晚红包、以及12306火车票购票网站、微信11亿活跃用户的流量冲击、滴滴打车和美团外卖的瞬时流量冲击,这些网站的技术难度都要远远高于B站。

回过头来看以Go语言为核心技术栈的企业,国内字节跳动后端就是以Go语言作为核心技术栈,两款龙头产品今日头条、抖音的活跃用户体量,以及并发量级同样都是B站所无法相提并论的,因此B站的技术难度并不是行业最高。

阿里的技术栈
(图片来源网络,侵删)

B站为什么用Go语言代替java重构整个核心业务

B站早期的技术选型极其混乱,当然这也是很多企业发展的一个必然过程阿里巴巴京东都经历过技术转型,毕竟不是每家企业都像Google百度、腾讯一样一开始就以C/C ++为核心技术栈的互联网企业,能够避免出现技术瓶颈的问题

B站早期是PHP为核心技术栈,毕竟对于一家创业公司来说,PHP往往是最快速、也是最便宜的解决方案,PHP也非常适合用来做业务和快速开发。慢慢地、B站中台逐渐被Node取代,为了让后台能够更好的支持高并发、运行更加稳定,也方便进行数据分析,B站逐渐将后台的核心技术栈转向Java语言,这时候就开始混乱了。

阿里的技术栈
(图片来源网络,侵删)

在B站高速发展的时候,故障非常多,用户规模上来、业务复杂程度上来之后,问题就变得越来越严重,代码混乱、架构也不合理,随着业务的不断发展,维护成本越高、维护难度也越大,最终还是到了很难维护的地步,这时候重构就变得非常重要了,重构除了架构上的改变,那就是要选择一门新的语言作为核心技术栈。

B站的研发总监毛剑一直以来的工作经历都是Go语言,他也带着自己的Go团队加入了B站,而Go语言生态还是不错的,Google作为Go语言的创造者,有大企业背书,Go语言支持Kafka、canel、hbase等众多框架,Go语言调用效率比***还要高,能够轻松地搞定较大的并发压力和瞬时流量冲击,Go语言还跟Docker契合得非常好,似乎选择Go语言已经顺理成章了。

因此最终B站选择了Go语言重构整个B站核心技术栈,一方面是因为业务需求,一方面是因为Go语言本身的技术优势,当然一方面也因为B站技术负责人的技术背景。目前B站已经成为仅次于爱奇艺、腾讯***、优酷、芒果TV之后第五大***网站,是原创高质量UGC领域的第一大***网站,也是国内最大的弹幕***网站和二次元***网站,日前B站还签下了第一直播网红冯提莫,未来B站发展可期。


本文为作者EmacserVimer悟空问答原创文章,未经允许转载、抄袭必究!

一个项目稳定,绝对不光是开发代码的功劳,这个需要软硬结合!

再强的代码,没有足够的硬件***支撑,面对大流量总有崩溃的时候!这个就牵扯到系统架构了!

当然只说到软件方面,一般大型项目或者大厂不会单纯的应用一种语言,因为有些服务可能需要用到其他语言写更加稳定,[_a***_]更到的工具,只能说是主语言是哪个。

之前确实B站代码泄露,从代码看主语言是go语言!

b站谈不到稳定,属于一般水平。

但是,也达到了全年可用时间三个9左右。即全年会挂52分钟不可访问。

小破站目前来看的确是比较传统的建站技术。严重依赖外界购买的cdn厂商服务。核心技术能力在编解码播放器弹幕方面。

需要cdn的部分,包括静态web文件,图片***,直播推流。

稳定性来看,流量都在cdn上,cdn运营商提供服务,和他主站就解耦了。但是前几天仍然发生主站当机,导致cdn回源主站失败的情况。

B站后台应该也是golang和j***a混搭的,目前B站不是在逐渐去除j***a嘛,还有就是B站后台稳不稳定跟用什么搭建没有呀直接关系,与一个系统的架构设计,熔断降级等配置有关系,是否有完善的监控系统,有强大的运维团队,有高质量的代码等因素有关系

再退一步说,B站部分功能不可用的时候,除了核心接口外,其他的你也很难感知所以你很难从外部角度来说B站的可用性

Dart做Android开发理想么?

Google现在真的是处于一个对J***a骑虎难下的尴尬境地,Oracle时不时出来恶心一下大家就搞得Google很难受,不过用不用J***a不光由Google决定,应用开发商也会有自己的选择,Google并不敢孤注一掷。

J***a本来是开源技术,大家都只要遵守J***a的开源协议,就可以免费使用J***a语言,可是创建J***a的Sun公司被Oracle收购之后,Oracle变得有点为所欲为了,眼红Android给Google带来商业利益,Oracle很明显不愿意为其他企业免费做嫁衣。

2010年甲骨文公司一直诉状将Google告上法庭,声称Google在开发Android时没有经过许可就使用了Oracle应用编程接口数据包。 即使Google 为了避免版权危机重写了J***a API,可是还是因为有跟Oracle JDK相同的九行代码,最终导致了版权危机。当然这其实是同一位工程师在两家不同的公司工作过写下的相同的代码。可是因为这9行代码,甲骨文曾经要求Google赔偿88亿美金。

从那之后Google一直在尝试替代J***a的可能方案,先后传出过自家的Go、Python,以及JetBrains的Kotlin,现在又弄出了Flutter(基于Dart语言)作为客户端解决方案,都是想要尽可能摆脱J***a的掣肘。

只不过替代的难度很大,这么多年的技术栈积淀,Google对于Android生态的管控又远远不如苹果,各手机大厂商的Android版本也不总是能第一时间跟上Google的步伐。

苹果生态都在自己的管控下,能够将iOS技术栈一夜之间从Objective-C更换到swift,反过来Google不行,现在Android10都出来了,使用Android 7.0以下的用户占比依然超过了70%,Google有心杀贼、可是偏偏无力回天,正可谓骑虎难下。

更激进地、Google为了解决这个问题,Google甚至专门开发了一个Fuchsia这样一个新的操作系统,试图随时替代Android,可是到目前为止Google也没敢强行上马。

Flutter是完全基于Dart语言的一个开发框架,它更像是个前端解决方案,想必大家都已经很熟悉Electron、React Native这些前端客户端解决方案,这些方案的优势在于减少在iOS和Android两端的重复开发,尽可能的一次编写多端运行,减少开发成本。

Flutter的优势在于,有Android Studio这样一个出色的IDE支持,能够开发Android、iOS、以及Windows等多终端应用,可以最大限度的实现技术复用,尤其是减少了很大的移动端开发成本。

阿里旗下二手交易平台闲鱼就是***用的flutter作为核心技术栈,尽管暴露出了一些问题,但是这却让闲鱼团队用了很小的人力成本就开发和维护了这个阿里内部用户量排名前几的app,很明显Flutter很好的满足了闲鱼的技术需求。除此之外,Google自己旗下的应用,腾讯的Now直播团队,滴滴、京东都在进行一些Flutter的尝试,相信未来基于Flutter的应用会越来越多。

个人觉得,就目前而言,做Android开发最理想的语言是Kotlin。

Dart其实早在2011年就出现了,只是一直默默无闻,受众太小,如果不是Flutter,鬼知道它是个什么东西。而Kotlin不同,它是2017年Google IO大会推出的,并定位为Android官方开发语言出现的,轰动一时。Kotlin以其精简的语法和对j***a的100%兼容而为开发者接纳,对于新项目,都会考虑用到它。Kotlin就是改良版的J***a。

原生开发方面,Kotlin 基本和 J***a 的完善程度等同,同时又被 Google 支持,是所有第三方语言都达不到的。Android 又不会用 Dart2 重写,所以原生开发它基本没戏。


Dart语言的一些基础却现代的特性列表:

  1. 非原始类型。Dart中,一切皆是对象。甚至bool,等价于J***a中的boolean,也是一个对象。纯面向对象编程语言应该是完全关乎对象的。J***a中的原始类型仅仅是实现的细节。

  2. 大幅简化的冗杂语法。创建编译期已知的公开常量可能通过关键字const来完成。不再有public static final。关键字public和private不再是语言的一部分。变量方法和类的可见性基于Dart的命名规范:一切默认为public。如果实体名以”_”开头,那么它就是private的。
  3. 已命名和工厂构造函数。J***a要求构造器依据类名命名,例如Rectangel。如果创建了Rectangle(int left, int top, int right,int bottom)和Rectangle(int left, int top,int width, int height),那么你将以编译期错误结束。因为J***a使用参数来分辨构造器。解决这个问题的一种方式是创建一个静态工厂方法。Dart以允许你创建已命名(和可选的工厂)构造函数的方式方法修改了这个问题。
  4. 现代参数传递:Dart支持按位和已命名参数。他们是可选的,并且具有默认值。
  5. 还有:混合类型(mixins),隐式接口,isolates(简单的并发模型)。

但任何语言都有它的有点和缺点,推动Dart到Android上显然表示Google将不得不努力工作以解决诸如性能、兼容性和互通性等问题。

所以做Android 开发只要你的基础扎实,无需在意什么语言开发,任何语言都能很好的开发

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.wnpsw.com/post/19005.html

语言技术Google
德国的互联网技术怎么样 编程语言看不懂,编程语言看不懂怎么办