1. Web直传阿里云OSS服务端临签名总结 2021-01-28
最近公司有新的需求,需要将文件上传到阿里云OSS,目前项目中的文件主要是存储到自己的服务器,这样很容易受服务器带宽、硬件的影响,加上服务器配置不高,应用服务很容易垮掉。之前也用过OSS,但是上传文件都是比较小的10MB以内的文件,采用的是生成数据流的方式。这种情况已经无法满足现在的应用场景,就又熟悉了一下SDK文档,主要的实现方式有:
1、 上传慢。先上传到应用服务器,再上传到OSS,网络传送多了一倍。如果数据直传到OSS,不走应用服务器,速度将大大提升,而且OSS是采用BGP带宽,能保证各地各运营商的速度。
2、 扩展性不好。如果后续用户多了,应用服务器会成为瓶颈。
3、 费用高。由于OSS上传流量是免费的。如果数据直传到OSS,不走应用服务器,那么将能省下几台应用服务器。
https://help.aliyun.com/document_detail/32122.html
采用JavaScript客户端直接签名(参见 JavaScript客户端签名直传 )时,AccessKey ID和AcessKey Secret会暴露在前端页面,因此存在严重的安全隐患。因此,OSS提供了服务端签名后直传的方案。
流程如下图所示:
本示例中,Web端向服务端请求签名,然后直接上传,不会对服务端产生压力,而且安全可靠。但本示例中的服务端无法实时了解用户上传了多少文件,上传了什么文件。如果想实时了解用户上传了什么文件,可以采用 服务端签名直传并设置上传回调 。
OSS 可以通过阿里云 STS (Security Token Service) 进行临时授权访问。阿里云 STS 是为云计算用户提供临时访问令牌的Web服务。通过 STS,您可以为第三方应用或子用户(即用户身份由您自己管理的用户)颁发一个自定义时效和权限的访问凭证。
STS 安全令牌、角色管理和使用相关内容详情,请参考 RAM 角色管理 。调用 STS 服务接口 AssumeRole 来获取有效访问凭证即可。
前端调用,请根据自身情况进行调用,下面是vue的示例
我们在项目中最终采用的是STS临时授权方案。
STS的优势如下:
关于STS的介绍请查阅阿里云官方文档:
https://help.aliyun.com/document_detail/32093.html?spm=a2c4g.11186623.6.1409.13107d9ckOKzS6
在这边不得不吐槽一下OSS的API,是真的很烂,基本找不到好的方法,都是基于网络才做出来的,当然,我使用的方法估计还有一些坑,只是能实现了我的功能。
STS临时授权访问OSS
https://help.aliyun.com/document_detail/100624.html?spm=a2c4g.11186623.2.5.600c6d13A0lSIR
vue直传OSS
https://blog.csdn.net/qq_33270001/article/details/88999189
el-upload组件结合上传阿里云OSS实现更优交互
https://blog.csdn.net/fifteen718/article/details/85259438
Web直传OSS
https://blog.csdn.net/weixin_33907511/article/details/91479830
OSS文件上传(页面直传)
https://blog.csdn.net/linlin_0904/article/details/84583676
请问STS和签名带Policy的差别
https://developer.aliyun.com/ask/205943?spm=a2c6h.13524658
STS临时授权访问OSS
https://www.cnblogs.com/ggband/p/10218851.html
vue+element+sts临时授权上传大文件到阿里云OSS时踩过的坑。
https://blog.csdn.net/aiguo94/article/details/111832776
Vue上传阿里云OSS(STS方式)
https://blog.csdn.net/qq_35775675/article/details/92797782
2. 无声手枪的美国制造
二战期间,美国的战略情报局(OSS)主持研制和使用了一些特殊的武器,其中最有名的手枪有两种,一种是FP-45“解放者”手枪,而另一种就是以下将介绍的OSS无声手枪。 1942年6月13日,在美国正式加入第二次世界大战后仅仅六个月,在美国参谋长联席会议下建立了针对国外的情报机构战略情报局(Office of Strategic Services),由绰号“疯狂比尔”的威廉·多诺万(William J. Donovan)上校领导,虽然这个情报机构没有悠久的历史,但多诺万效仿英国的同行特别行动执行部(SOE)训练,并迅速开展各项行动,而且在整个战争期间,OSS都跟SOE进行了广泛而密切的合作。
多诺万给OSS确定的两项主要任务为收集情报和从事秘密战争,支持这些行动的三个主要功能部门分别是:特别行动处(从事秘密战争);秘密情报处(把全球地区划分为四个地域进行情报收集);反间谍处(该处也称为X-2)。此外,多诺万还在OSS中设立了一系列专业部门来进行辅助工作,包括有:通过学术界来设计军事策略的研究分析部;由专业广告人和好莱坞编剧进行战争宣传的道德行为部;联络被德国占领的欧洲国家里的工会进行破坏和颠覆活动的劳动部;还有专门负责研制各种特殊用途武器的研究发展部。
研究发展部第一任部长史丹利·洛威尔(Stanley P. Lovell)来自研制与国防研究委员会(National Defense Research Committee,简称NDRC)。这里也要简单介绍一下为OSS提供器材研究支援的NDRC,而OSS消声手枪的研制工作就是由NDRC领导的。
NDRC的历史可以追溯到美国内战期间,由美国科学委员会在林肯总统的授意下成立的美国科学院(American Academy of Sciences),该院成立的目的便是为军队研制新式武器提供支持,在第一次世界大战期间又变成国防委员会(National Defense Council)的组织。到了二战时期,他们又变成了NDRC。NDRC会由19个部门和若干专门委员会或专家组所组成,这些部门的研究领域极为广泛,包括了:弹道学、冲击爆炸效应、火箭器材、军械配件、导弹、水下武器、火控装置、爆炸品、化学品、吸收剂和气溶胶、化工、交通运输、电子通信、雷达、视觉伪装、以及军事学术方面的应用数学和物理研究。NDRC中最神秘的部门是第19部,它研究的“综合武器”是为OSS及其所属的英国分支机构专门针对解决“专题问题”。
到了1943年10月,OSS研究发展部门已经扩大由四个分支部门组成。其中技术部负责所有NDRC和英国SOE之间的项目联系(洛威尔部长同时也是NDRC第19分部的联络人。);文档部负责记录和保密所有特工人员的档案;伪装部负责提供特种作战和人员的掩护或伪装装置;特别助理部则为特工们提供其他三个部门负责范围以外的其他支援。
针对敌后行动和秘密战争的需求,OSS的发展项目包括高标(Hi-Standard)无声手枪、解放者.45 ACP口径单发手枪,.22口径毒刺(Stinger)手枪,.45 ACP口径M3无声冲锋枪,还有种种匕首和刀具及弓弩、火柴盒相机、自杀药物、迷药、燃烧弹等多种装备。其中最成功和最着名的武器之一便是高标无声手枪。
当然,一支无声枪在任何秘密行动中都可能被列为首选装备,所以在OSS成立后不久,特工们就尝试在.22 LR口径的柯尔特“森林人”(Woodsman)手枪装上仿制的马克沁式消声器来使用。这种消声器连接在枪管延长段上,消声器顶部配有条状准星,配合手枪原本的标准照门使用。枪管的延长段据称也提高了武器的精度,这种大型消声器在很大程度上降低膛口噪声,只是武器的尺寸变得太长,不太便于隐蔽携带。
其实以马克沁式消声器为原型的设计很早的时候已经通过美国军方的试验。Savage武器公司和Sedgley制造公司都生产过这种消声器,然而由于美国联邦法律限制了消声器的使用,所以仿制马克沁式消声器的生产在1926年就停止。不过此时由于战争的需要,OSS要求设计一种更轻便的消声器。于是在1942年10月27日,NDRC的计划委员会提出了12项研究建议,其中第一项就是关于研制一种全新的消声武器,其具体要求如下:1)无声;2)无枪口焰;3)枪口初速至少在1,000fps(约305m/s);4)最好是.50口径;5)装填时间少于30秒。这份消声武器研究的合同判给了位于新泽西州的西部电力公司(Western Electric Compan),他们受命研制的消声器指标如下:在三十英尺外不能听到武器发射的声响;枪口焰特征要极小;要能适合.45 ACP手枪、.30口径的M1伽兰德步枪或M1917恩菲尔德步枪。
该份研究合同于1943年4月6日签署,三个星期后,西部电力公司向OSS提供了一把改装的柯尔特“森林人”手枪,几个月后,在阿伯丁射击场对这种手枪进行了试验,结果并不令人满意。这种消声型的柯尔特“森林人”手枪只有在使用高速弹时才能实施半自动,而且它的消声效果也不佳。后来又试验了钨金合金制成的弹头,虽然成功地大幅降低膛口噪声,但却出现膛压过大和令人不快的套筒咔咔声。后来又尝试了给.32 ACP和.380 ACP口径的柯尔特手枪加长枪管以安装这种消声器,但也失败了。
与此同时,贝尔电话实验室(Bell Telephone Laboratories)的工程师们研制了一种可安装在高标手枪上的消声器。这项设计的试验效果好多了,于是NDRC也和贝尔电话实验室签订了一份研究合同,由贝尔电话实验室生产110支无声手枪用于进一步的试验。其中包括66支柯尔特“森林人”和“比赛靶”(Match Target)手枪,44支分别是A型、B型、D型和E型等不同枪管长度的高标手枪。这批试验武器在1943年10月正式开始交货。 通过试验发现,由高标手枪改装的无声手枪的效果最好。于是在1943年11月22日,OSS采购处要求军械处跟康涅狄格州纽黑文(New Haven)的高标手枪制造公司签订合同,定购1,500支以.22 LR口径H-D军用型手枪(也称为HDM)为基础加装消声器的手枪,该枪也称为OSS无声手枪。这项合同在1944年6月20日开始交货,到1944年10月10日全部完成。在实际使用中OSS的特工们对这种枪比较满意,于是在1944年8月18日又多订购了1,000支,并在1944年10月10日完成交货。
在此期间还发生了一个小插曲,在1944年7月突然有人注意到根据海牙公约第23e章节对达姆弹等扩张型弹头的限制,这意味着军事人员不能使用没有被甲的裸铅弹的轻武器,而.22 LR的普遍弹种却正是裸铅弹。于是此时已升为将军的多诺万便下令OSS当中的现役军人停止使用OSS无声手枪,除非研制了全被甲弹并配发使用,而文职人员则允许可以继续配发和使用这种武器。换句话说,如果一组OSS的特工需要进行一次秘密行动,那么他们当中的有人仍然属于现役军人,他就不能使用OSS无声手枪开火,而其中的“平民”特工却能使用OSS无声手枪向敌人射击。在实际行动当中有多少人会遵守这条官僚禁令呢?我这里没有统计数字,不过为了解决这个问题,OSS也立即要求研制专门为现役军人特工使用的全被甲结构的.22 LR弹。这项要求很快得到回应,到了1945年2月8日,OSS获得了20,000发全被甲结构的T-42型.22 LR弹供军人使用。不过,标准的雷明顿裸铅弹仍然被OSS的特工大量使用。
二战结束后,OSS变成了CIA,而OSS高标无声手枪也被CIA的特工继续使用。在朝鲜战争和越南战争中,不仅CIA的特工在使用这种武器,就是特种部队也会在一些秘密行动中使用这种武器,例如侦察兵用此武器来摸哨。在冷战时期,最有名的OSS无声手枪属于CIA的飞行员弗朗西斯·加里·鲍尔斯(Francis Gary Powers),他在1960年5月1日驾驶U2侦察机在苏联上空被击落,这把枪在他身上被发现。据说前苏联对特种消声武器枪和弹的研究正是始于他们缴获的这把枪。
OSS无声手枪基本上就是在高标HDM型手枪基础上安装消声器组合而成,这是一种自由后坐式自动原理手枪。该枪的主要组成部分是:1)包括握把和枪管固定座在内的套筒座,这是机加生产的,套筒导轨加工在枪管固定座后面;2)枪管用销子固定在套筒座上;3)套筒在枪管后面,内含击针、拉壳钩和复进簧组件;4)击发机构包括扳机、扳机连杆、扳机簧、外露击锤、击锤簧和压簧杆等。
该枪配用10发单排可卸弹匣,该弹匣可与柯尔特“森林人”手枪互换。弹匣解脱钮位于握把侧面,在扳机护圈根部。手动保险位于底把左侧,可通过拇指操纵。
在高标HDM型手枪上,枪管前端安装有三角形的固定准星,而OSS高标无声手枪的准星则安装在消声器上。套筒后上方有缺口式照门,可调节风偏。 管状消声器全长7.75英寸(约197mm),直径1英寸(25.4mm)。消声器拧在从套筒上露出来的枪管上。枪管上开有4排泄气孔,每排11个,泄气孔直径为0.125英寸(3.175mm)。消声器内有多个由铜丝网卷成的圆圈,通过吸热原理使火药燃气冷却,降低气体压力。这种消声器使膛口噪声降低超过20dB,在那个时代来说,这个效果已经是相当出色了。吸热式消声器的缺点是吸热材料容易积聚火药残渣,需要经常清洗,但OSS无声手枪的消声器是设计成一次性用品,本身不能分解维护。该消声器的使用寿命估计为200发左右,不过以这种特工武器的使用特色,这样的寿命足够给一个特工平时练习和实际使用了。另外消声器本身可以从枪管上拧下来,这是为了便于维护手枪,但也方便了更换一个新的消声器。
OSS的第一份订购合同中要求对该手枪表面作烤蓝处理,而第二份合同则要求对手枪作磷酸盐处理。不过这两份合同中的消声器均要求作磷酸盐处理。
要分解OSS高标无声手枪时,首先卸下弹匣,拉开套筒确认弹膛是空的。当套筒拉到底后,按下套筒顶部的小卡榫,这样可把复进簧压在后面,然后让套筒慢慢前移,直到套筒座右侧、握把后方的分解柄可以转动的位置——这时便把分解旋柄向下旋转,同时保持压住套筒顶部的复进簧固定卡榫,这时便可把套筒向后卸出。
重新组装手枪时,也要把复进簧压缩在后面,如果复进簧已经释放,随便用个小工具把它压回套筒底部,然后压下套筒顶部的卡榫固定。然后把击锤压倒,再把套筒放回套筒座的导槽上,把套筒往前推,这样时便可放开复进簧固定卡榫。
即使在战争期间立下了赫赫战功,OSS无声手枪却没有好的结果,甚至没有被列为美国政府财产。今天,真正的原装OSS无声手枪已经很少见了,私人收藏的也是非常罕有。有一家轻武器技术有限公司(Arms Tech Ltd.)仿制出和当年几乎完全相同的OSS高标无声手枪供轻武器收藏家或军事历史爱好者购买。甚至连当年的套筒左侧的铭文“HISTANDARD MODEL H-D MILITARY(高标H-D型军用)”都造得一模一样,不过现代技术下生产的这种山寨OSS无声手枪比当年的真品要轻巧一些。
全枪长350 mm枪管长171 mm枪高127 mm空枪重1.36 kg弹匣容量10 rds有效射程15 m。
3. 零基础学java应该从哪里开始
零基础学Java最开始要做的就是整理出一份Java学习路线,只有合理规划学习路线才能在最短的时间里有效的学习。下面来看一份Java的学习路线以供参考:
第一阶段、JavaSE 课时:20天
• Java基础语法• 面向对象基础• 常用API• 集合框架• 线程(池)• 代理反射• 网络编程
第二阶段、JavaWeb 课时:15天
• html•Css•javaScript•Jquery• JavaWeb• session(cookie)• filter• 上传和下载组件• JSP• Tomcat服务器• Druid连接池
第三阶段、企业级框架 课时:25天
• Spring• SpringMVC• SpringBoot• MyBatis(MyBatis-plus)• Maven管理• Git•Tomcat集成•数据库分库分表
第四阶段、互联网前沿技术 课时:25天
• Dubbo分布式框架• SpringCloud微服务• RocketMQ消息中间件• Redis缓存中间件• ES查询中间件• Vue前端框架•OSS对象存储中间件
4. 中国联通的BSS、CRM、ESS、OSS之间的关系,以及和中国联通的 固网、移网之间的关系和联系
CRM是客户关系系统,用来管理联通企业与客户之间的关系数据。
BSS是前端营业系统的简称,例如开户、缴费、客户信息查询等都在这类系统中实现。
OSS是后端维护系统的总称,例如后端报修、专业网管管理、硬件数据修改都在这类系统中实现。
ESS专用于管理终端销售。
这类系统的分类,与联通固网、移动网的分类角度不同,前者站在企业内部系统功能角度来分类,而后者站在提供业务角度来分类。换言之,固网需要用到OSS来管理后端硬件,也需要用到CRM系统来管理前台客户数据;移动网同样也需要用到这些系统。
5. 阿里云架构师解读四大主流游戏架构
游戏 行业是阿里云最早聚焦的行业之一,近年来 游戏 行业的变化、云计算产品技术的变化都与日俱进。随着行业业务的变化、技术架构的演进以及阿里云产品的迭代演进,整体的产品技术选型在不同的 游戏 场景、业务场景也不尽相同。本文将聚焦阿里云弹性计算产品在 游戏 行业的方案实践经验。
当前, 游戏 行业的各种场景和行业发展密不可分。简单回顾电子 游戏 的发展,80年代的黑白机,90年代的PC单机 游戏 ,00年代前夕随着互联网的发展网络 游戏 开始盛行,2010年后随着移动设备的逐渐普及,手游在国内开始兴起。
从 游戏 终端来区别,主要有:主机 游戏 (往往是3A 游戏 )、PC 游戏 、移动 游戏 和网页 游戏 等。目前出现跨平台多端 游戏 ,以及云 游戏 化的趋势。
关于 游戏 的品类区别会有非常多的维度:RPG(角色扮演)、MOBA类、竞技类、FPS(射击类)、休闲类、卡牌类、棋牌类、SLG(策略类)等等。目前有多品类融合玩法裂变的趋势。
随着国内防沉迷、版号因素,近年来 游戏 行业诞生了越来越多的精品 游戏 ,出海全球化乃至区域化,以及整体存量用户增速放缓,长线运营、精细运营以及私域社区等运营方式也在悄然变化。
不同的业务场景技术架构不尽相同,如竞技类 游戏 和卡牌类 游戏 对计算的需求就有所区别,云 游戏 与常规的网络 游戏 架构也有所区别。这里主要从 游戏 服和 游戏 平台、大数据、云 游戏 这四个目前常见的场景简单介绍其架构。
游戏 服,从 游戏 类型来看有RPG、FPS、MOBA、SLG、棋牌、休闲等等;从 游戏 平台来看通常有主机、手机、PC等;从业务发行来看有全球、国内、海外,从部署架构来看有集中部署和分区部署;从技术架构来看, 游戏 行业也有逐渐分层解耦的趋势,但与互联网应用相比,有一定其独特性。
因为 游戏 的强交互性特点, 游戏 技术架构与其他互联网应用相比有一定独特性。 游戏 需要保持会话连接,也就是从一个客户端到服务端的长连接,便于对客户端中玩家的操作、行为等进行及时的反馈以及推送给共同 游戏 或对战的其他玩家,所以 游戏 普遍对网络质量更加敏感,网络质量较差的情况会使长连接断开或重连,引起玩家掉线。 游戏 也需要保持会话的状态,既服务端会保持一份玩家的实体,当玩家进行操作时,下次通信的数据会依赖之前的通信的数据,这也是一些MMO(多人在线)大型 游戏 对网络吞吐性能要求较高的原因之一。再比如FPS、MOBA类等多人对战类 游戏 ,交互性更强,对网络延迟容忍度更低,要求低延迟。因为 游戏 需要比较高密度的记录玩家的操作以及结果,所以有频繁写入数据的特点,这类场景需要较强的IO性能。因为 游戏 强交互性、低延迟的特点,其技术架构也和互联网应用不同,在逐渐分层解耦的同时,需要保证 游戏 玩家的交互效果,同时也会依赖到底层服务器的计算能力。
这些都是 游戏 场景普遍存在的特点:长连接保持会话、保持状态、低延迟网络、高IO吞吐、高计算性能。
游戏 的部署架构会结合 游戏 业务特点、 游戏 运营需求来制定 游戏 服务,有分区分服、全区全服业务逻辑,分区分服还是全区全服,最大的架构差异在于数据是不是一套。而从部署方式看,主要是集中式部署和分区域部署。
集中部署就是不论 游戏 玩家在哪里, 游戏 服务集中在一个区域,适合对网络延迟要求通常不高的 游戏 类型,如休闲类;分区部署是指 游戏 服务器根据 游戏 玩家地域分布,分区域部署,方便就近接入,适合对网络延迟要求较高的 游戏 类型,如MOBA、FPS类。
典型架构
MMO类有高并发特点,大量玩家并发的高计算量负载对服务器的计算能力和稳定性有着极高的要求。同时MMO类 游戏 有着比较强的PVE或PVP特性,对网络延迟的容忍度较低。
其中网关服务器负责所有网络数据包的转发,通常是网络负载较集中的点,对于网络吞吐能力要求较高。单个 游戏 区承载玩家数量高,逻辑服务器通常按照场景地图来划分,规模再大会通过分区的方式实现。
数据中心服务器负责缓存玩家数据并异步入库,保障玩家客户快速获取和写入数据,对于可用性要求较高,需要配合应用层实现数据容错机制。
日志服务器承载了大区所有业务行为的日志收集及处理的压力,对磁盘写入性能要求较高,通常采用多台分组方式实现。
(1)MMO 游戏 服性能与稳定需求,建议使用最第7代ECS实例,根据实际需求选型c计算型(CPU与内存配比1:2)/g通用型(1:4)/r内存型(1:8),Intel Ice Lake 2.9GHz基频3.5GHz睿频提供超高性能,能更好地优化 游戏 体验。
(2)异步落库以及日志服务器,对于磁盘读写性能要求高的场景,建议云上使用ESSD PL 0/1/2/3根据业务性能需要选择,避免磁盘读写瓶颈。
(3)在 游戏 日常版本更新中,需要各个地域Region镜像的快速复制,基于ESSD快照异地复制的能力,能够提升镜像复制效率。
(4)分区分服等场景往往需要快速地开服滚服合服,通过CADT云速搭、ESS弹性伸缩、OOS运维编排、ROS资源编排等云上运维工具搭配产品使用,能够提升云上运维效率。
ii. FPS、MOBA类 游戏 架构介绍
MOBA类 游戏 主要包括PVP系统、PVE系统、 游戏 平台等几个主要部分,其中PVP战斗是MOBA/FPS 游戏 的核心。
PVP、PVE、 游戏 平台功能部署于同一VPC中,构成 游戏 大区;战斗服务器(往往)单独跨地域部署。
游戏 客户端首先接入到登录服务器中,完成登录认证、计费等 游戏 平台逻辑。为避免单点问题,所以 游戏 平台服务往往需要高可用方案。可利用云上高可用方案,包括便捷的运维工具满足业务高可用需求。
FPS/MOBA竞技 游戏 ,往往对延迟特别敏感,可以想象,竞技类 游戏 中对战的 游戏 场景:玩家操控人物,在地图里步伐飘逸,枪声密集,每一颗子弹都是一次时间加上空间的矢量计算,而且需要在主进程中完成计算,那么算力需求就随着房间玩家数量上升而指数爆炸,5V5的房间和大房间100人(吃鸡)对算力的需求完全不同。
游戏 这部分重算力场景,推荐阿里云7代高主频或七代实例,更高的单核性能提供更好的战斗效果。
战斗房间类 游戏 ,因为业务本身峰谷特性,灵活地使用云上资源的弹性能力,往往会较好地优化整体的资源使用成本。阿里云弹性计算本身提供了非常灵活的付费方式,包括常规的按量实例、包月包年实例、以及通过节省计划/预留实例券去抵扣按量实例资源,兼顾资源灵活使用的同时达到更优的成本。
此外,为更进一步释放开发运维的效率,当前一些 游戏 也采用了容器化技术架构,阿里云的ACK+ECS/ECI弹性容器实例组合搭配使用,更进一步释放了基础资源的灵活性和弹性能力。
业务场景
游戏 平台(不限于FPS、MOBA类)主要提供的服务:官网、客服、注册、登录、充值、兑换、商城、推送、公告、社区、SDK及邮件、短信等公共服务;包括内容审核、视频录制、弹幕、转码、剪辑、RTC这些业务需要的基础服务,以及运维监控、发布平台、测试平台这些运维等平台服务。
这部分更接近于通用的互联网技术架构,以服务为颗粒度解耦,接入->网关->应用->数据库。
技术特点
这往往通常需要构建高可用基础架构来提升稳定性,业务突发期往往需要一定的弹性能力。相比于 游戏 服务这部分容器化就更加普及,也更容易通过云上的比如弹性容器实例去应对流量峰值场景。在视频录制场景,对实时性要求较高时,往往会基于GPU能力构建,这部分阿里云也提供了vGPU/cGPU能力,释放GPU的灵活性。
大数据是当前 游戏 业务经营、 游戏 运营主要的技术手段,主要面向平台数据运营、 游戏 数据分析、广告转化分析、安全运营分析等 游戏 核心运营场景。不同的场景对实时性要求不同,实时查询检索通常是经营分析、客户受理、玩家监测、在线等场景;离线报表通常是玩家行为分析、用户画像、特征挖掘等场景。
总体而言,实时性业务更多是业务查询类、简单计算类任务,比如买量转化的分析;离线类基本是分析类、预测类任务,比如 游戏 玩法分析。
从技术架构来看,得益于开源社区技术栈的高丰富度,大数据具体的技术选择非常之多,整体从存算一体到存算分离,也诞生像数据仓库、数据湖乃至湖仓一体等概念。
从数据架构流程来看,从数据源->数据采集、传输->数据计算、存储->数据应用,其中可选看技术方案也需要因地制宜。
从部署架构来看,不同的 游戏 公司处在不同的数据建设阶段,会有不同的选择倾向,包括完全自建、基于云自建大数据、基于云上托管、以及利用更多云上成熟的产品技术去丰富整体的大数据能力集,而后者也成为越来越多客户的选择。
拿云上大数据方案举例来讲,比如实时计算部分,选择SLS采集、Kafka数据网关通道,通过Flink做数据计算,通过ES或CK做数据分析,通过ADB以及QuickBI做数据应用展示。离线方案通过OSS做冷数据存储,Spark、Hive、HDFS等组件做数据计算存储,通过CK汇聚分析,通过Dataworks做数据应用。
具体计算存储的产品选型,主要根据不同的业务特性以及大数据应用特性来区分,根据数据容量、IOPS、吞吐、读写特点以及性价比来选择。
如刚刚举例的实时计算/近实时计算场景,Flink具备高性能、低延迟特点,所以是计算密集、网络性能高场景,推荐选型七代ECS实例或6代增强实例;如HDFS需要超大存储容量,高吞吐,推荐D系列本地盘实例,如D2S存储型本地盘实例。Remote Shuffle Service等处理结果多的场景,读写处理频繁如大量的join计算,需要综合来看计算、网络、存储性能以及综合成本来选择通用实例(如第7代ECS实例)或i系列本地盘实例。所以,最终在云上的资源选型,在性能满足的前期下,需要评估通过网络传输数据成本高(云盘),还是就地取材计算成本高(本地盘),不同模型、不同量级选择不同。
从内存处理(成本最高、性能最好、存储容量最小)、SSD本地盘、HDD本地盘、ESSD云盘、OSS对象存储(成本最优、性能一般、存储容量最大),逐渐分层解耦,还带来一个好处:充分释放了云上弹性的能力,可以利用更轻巧的弹性计算产品(如SPOT抢占式实例方式,或ECI容器实例)进行大数据计算,达到更好的弹性能力去满足业务需求的同时也能节约更多的成本。
云 游戏 主要分终端和云端。终端部分基于Windows、iOS、Linux等操作系统的终端设备包括手机、平板、电脑、电视机、VR一体机等。云端架构主要是 游戏 应用层、云 游戏 平台层、IaaS基础资源层,应用层包括PC 游戏 、手游、VR 游戏 、H5 游戏 等多种类型的 游戏 应用;平台层云 游戏 必须的运营平台、支撑平台、流化技术平台等;IaaS基础资源层包括基础网络、基于X86架构以及ARM架构的GPU服务器。
云 游戏 落地,在技术上也经历了诸多挑战,为满足端到端高性能低时延,网络调度、指令串流、编解码、多终端的SDK适配等等都是云 游戏 场景中不可避免的技术问题。
对于云端算力来讲,阿里云解决了云端渲染、串流以及编解码问题,并通过全系列GPU产品来满足云手游、端游、VR乃至企业级视觉渲染场景的需求。
总结来讲,阿里云弹性计算通过云上的串流、编码加速、渲染加速等全套的技术帮助 游戏 客户给云 游戏 玩家提供更好的性能体验,通过基于阿里云全球数据中心可以帮助云 游戏 客户覆盖更多的用户,通过GPU多种产品形态和整体的弹性能力,也帮助到 游戏 客户去更快捷更灵活的构建其云 游戏 业务。
阿里云通过多年的技术积累和持续的运营,提供了大规模的基础设施云服务,目前在全球部署了26个地域、82个可用区,通过优异稳定的性能表现帮助 游戏 客户高效稳定地运行 游戏 业务,为玩家提供极致顺滑的 游戏 体验,并通过技术手段不断地帮助 游戏 客户优化用云成本。
国内的业务出海、 游戏 出海也是现阶段大的趋势之一,很多 游戏 公司已经把出海从业务可选项变成了必选项之一。在2022年3月,阿里云上线了韩国和泰国两大Region,能够为本地化的 游戏 业务提供更流畅、更稳定的 游戏 体验,以此希望能在 游戏 客户出海的业务领域,提供更多的帮助。
当然,作为内容与 科技 两大热门领域的交叉领域, 游戏 产业日新月异,架构也随着前端业务的需要不断改变。阿里云弹性计算也针对 游戏 厂商的不同架构,陆续推出了不同的云服务器类型和付费方式,以及云上运维套件,以帮助客户降本增效。
原文链接:http://click.aliyun.com/m/1000336551/
6. web前端的移动端的兼容性问题怎么解决
//兼容IE浏览器的
<meta http-equiv="X-UA-Compatible" content="IE=edge">
//兼容移动端的
<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
//html5.shiv兼容不支持html5 的
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
一般在head中添加这几个之后,移动端就没有什么大问题了,希望对你有帮助,望采纳!
7. 现在什么技术取代了jsp
Spring Boot一部分取代了jsp:
以前老的方式是:
1.客户端请求
2.服务端的servlet或controller接收请求(路由规则由后端制定,整个项目开发的权重大部分在后端)
3.调用service,代码完成业务逻辑
4.返回jsp
5.jsp展现一些动态的代码
新的方式是:
1.浏览器发送请求
2.直接到达html页面(路由规则由前端制定,整个项目开发的权重前移)
3.html页面负责调用服务端接口产生数据(通过ajax等等)
4.填充html,展现动态效果。
(有兴趣的童鞋可以访问一下阿里巴巴等大型网站,然后按一下F12,监控一下你刷新一次页面,他的http是怎么玩的,大多数都是单独请求后台数据,使用json传输数据,而不是一个大而全的http请求把整个页面包括动+静全部返回过来)
这样做的好处是:
1.可以实现真正的前后端解耦,前端服务器使用nginx。
前端服务器放的是css,js,图片等等一系列静态资源(甚至你还可以css,js,图片等资源放到特定的文件服务器,例如阿里云的oss,并使用cdn加速),前端服务器负责控制页面引用,跳转,调用后端的接口,后端服务器使用tomcat。
(这里需要使用一些前端工程化的框架比如nodejs,react,router,react,rex,webpack)
2.发现bug,可以快速定位是谁的问题,不会出现互相踢皮球的现象。
页面逻辑,跳转错误,浏览器兼容性问题,脚本错误,页面样式等问题,全部由前端工程师来负责。
接口数据出错,数据没有提交成功,应答超时等问题,全部由后端工程师来解决。
双方互不干扰,前端与后端是相亲相爱的一家人。
3.在大并发情况下,我可以同时水平扩展前后端服务器,比如淘宝的一个首页就需要2000台前端服务器做集群来抗住日均多少亿+的日均pv。
(去参加阿里的技术峰会,听他们说他们的web容器都是自己写的,就算他单实例抗10万http并发,2000台是2亿http并发,并且他们还可以根据预知洪峰来无限拓展,很恐怖,就一个首页。。。)
4.减少后端服务器的并发压力,除了接口以外的其他所有http请求全部转移到前端nginx上。
5.即使后端服务暂时超时或者宕机了,前端页面也会正常访问,只不过数据刷不出来而已。
6.也许你也需要有微信相关的轻应用,那样你的接口完全可以共用,如果也有app相关的服务,那么只要通过一些代码重构,也可以大量复用接口,提升效率。
7.页面显示的东西再多也不怕,因为是异步加载。
8. day06项目【整合阿里云OSS和Excel导入分类】
为了解决海量数据存储与弹性扩容,项目中我们采用云存储的解决方案- 阿里云OSS。
1、开通“对象存储OSS”服务
(1)申请阿里云账号
(2)实名认证
(3)开通“对象存储OSS”服务
(4)进入管理控制台
2、创建Bucket
选择:标准存储、公共读、不开通
3、上传默认头像
创建文件夹avatar,上传默认的用户头像
1、在service模块下创建子模块service-oss
2、配置pom.xml
service-oss上级模块service已经引入service的公共依赖,所以service-oss模块只需引入阿里云oss相关依赖即可,
service父模块已经引入了service-base模块,所以Swagger相关默认已经引入
3、配置application.properties
4、logback-spring.xml
5、创建启动类
创建OssApplication.java
6、启动项目
报错 :
spring boot 会默认加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration这个类,
而DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean,又因为项目(oss模块)中并没有关于dataSource相关的配置信息,所以当spring创建dataSource bean时因缺少相关的信息就会报错。
即可成功:
1、从配置文件读取常量
创建常量读取工具类:ConstantPropertiesUtil.java
使用@Value读取application.properties里的配置内容
用spring的 InitializingBean 的 afterPropertiesSet 来初始化配置信息,这个方法将在所有的属性被初始化后调用。
2、文件上传
创建Service接口:uploadFileAvatar.java
实现:OssServiceImpl.java
参考SDK中的:Java->上传文件->简单上传->流式上传->上传文件流
3、控制层
创建controller:FileUploadController.java
4、重启oss服务
5、Swagger中测试文件上传
解决上传文件覆盖问题:
测试:
6、配置nginx反向代理
配置nginx实现请求转发的功能:
验证:
1、复制头像上传组件
从vue-element-admin复制组件:
vue-element-admin/src/components/ImageCropper
vue-element-admin/src/components/PanThumb
2、前端参考实现
src/views/components-demo/avatarUpload.vue
3、前端添加文件上传组件
src/views/e/teacher/save.vue
template:
引入组件模块:
4、设置默认头像(也可不设置)
onfig/dev.env.js中添加阿里云oss bucket地址
组件中初始化头像默认地址
5、js脚本实现上传和图片回显
二、测试文件上传
前后端联调
1、数据导入:减轻录入工作量
2、数据导出:统计信息归档
3、数据传输:异构系统之间数据传输
1、EasyExcel特点
Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。
EasyExcel是阿里巴巴开源的一个excel处理框架, 以使用简单、节省内存着称 。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。
EasyExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理(AnalysisEventListener)。
1、创建一个普通的maven项目
项目名:excel-easydemo
2、pom中引入xml相关依赖
3、创建实体类
设置表头和添加的数据字段
4 、实现写操作
TestEasyExcel.java
(1)创建方法循环设置要添加到Excel的数据
(2)实现最终的添加操作(写法一)
(3)实现最终的添加操作(写法二)
public static void main(String[] args) throws Exception {
// 写法2,方法二需要手动关闭流
//实现excel写的操作
//1 设置写入文件夹地址和excel文件名称
String filename = "F:\write.xlsx";
ExcelWriter excelWriter=EasyExcel.write(fileName,DemoData.class).build();
WriteSheet writeSheet=EasyExcel.writerSheet("写入方法二").build();
excelWriter.write(data(),writeSheet);
/// 千万别忘记finish 会帮忙关闭流
excelWriter.finish();
}
1、创建实体类
2、创建读取操作的监听器
3、调用实现最终的读取
public class TestEasyExcel {
public static void main(String[] args) {
//实现excel读操作
// 写法1:
String filename = "F:\write.xlsx";
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
EasyExcel.read(filename,DemoData.class,new ExcelListener()).sheet().doRead();
// 写法2:
InputStream in = new BufferedInputStream(new FileInputStream("F:\01.xlsx"));
ExcelReader excelReader = EasyExcel.read(in, DemoData.class, new ExcelListener()).build();
ReadSheet readSheet = EasyExcel.readSheet(0).build();
excelReader.read(readSheet);
// 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的
excelReader.finish();
}
1、编辑Excel模板
2、将文件上传至阿里云OSS
1、添加路由
2、添加vue组件
1、js定义数据
2、template
3、js上传方法
4、回调函数
1、service-e模块配置依赖
1、ESubjectController
2、创建和Excel对应的实体类
3、ESubjectService
(1)接口
(2)实现类
4、创建读取Excel监听器
1、参考 views/tree/index.vue
2、创建api
api/e/subject.js
3、list.vue
1、创建vo
2、创建controller
9. javascript 上传文件到阿里云的oss,上传文件成功后怎么获取文件的真实路径
如果你直接使用 javascript 将阿里云的accessId、accessKey写在页面上是不安全的,你可以使用后台存储这些敏感的信息,官网有相关的SDK ,你可以选择你常用的。
在后台编写你的回调函数,将回调函数凭证信息返回给前端,前端使用回调函数凭证访问OSS,就可以获取到回调函数信息。
10. OSS无声手枪主要组成部分有哪些
通过试验发现,由高标手枪改装的无声手枪的效果最好。于是在1943年11月22日,OSS采购处要求军械处跟康涅狄格州纽黑文(NewHaven)的高标手枪制造公司签订合同,定购1,500支以.22LR口径H-D军用型手枪(也称为HDM)为基础加装消声器的手枪,该枪也称为OSS无声手枪。这项合同在1944年6月20日开始交货,到1944年10月10日全部完成。在实际使用中OSS的特工们对这种枪比较满意,于是在1944年8月18日又多订购了1,000支,并在1944年10月10日完成交货。
在此期间还发生了一个小插曲,在1944年7月突然有人注意到根据海牙公约第23e章节对达姆弹等扩张型弹头的限制,这意味着军事人员不能使用没有被甲的裸铅弹的轻武器,而.22LR的普遍弹种却正是裸铅弹。于是此时已升为将军的多诺万便下令OSS当中的现役军人停止使用OSS无声手枪,除非研制了全被甲弹并配发使用,而文职人员则允许可以继续配发和使用这种武器。
换句话说,如果一组OSS的特工需要进行一次秘密行动,那么他们当中的有人仍然属于现役军人,他就不能使用OSS无声手枪开火,而其中的“平民”特工却能使用OSS无声手枪向敌人射击。在实际行动当中有多少人会遵守这条官僚禁令呢?我这里没有统计数字,不过为了解决这个问题,OSS也立即要求研制专门为现役军人特工使用的全被甲结构的.22LR弹。这项要求很快得到回应,到了1945年2月8日,OSS获得了20,000发全被甲结构的T-42型.22LR弹供军人使用。不过,标准的雷明顿裸铅弹仍然被OSS的特工大量使用。
二战结束后,OSS变成了CIA,而OSS高标无声手枪也被CIA的特工继续使用。在朝鲜战争和越南战争中,不仅CIA的特工在使用这种武器,就是特种部队也会在一些秘密行动中使用这种武器,例如侦察兵用此武器来摸哨。在冷战时期,最有名的OSS无声手枪属于CIA的飞行员弗朗西斯·加里·鲍尔斯(FrancisGaryPowers),他在1960年5月1日驾驶U2侦察机在苏联上空被击落,这把枪在他身上被发现。据说前苏联对特种消声武器枪和弹的研究正是始于他们缴获的这把枪。
OSS无声手枪基本上就是在高标HDM型手枪基础上安装消声器组合而成,这是一种自由后坐式自动原理手枪。该枪的主要组成部分是:(1)包括握把和枪管固定座在内的套筒座,这是机加生产的,套筒导轨加工在枪管固定座后面。
(2)枪管用销子固定在套筒座上。
(3)套筒在枪管后面,内含击针、拉壳钩和复进簧组件。
(4)击发机构包括扳机、扳机连杆、扳机簧、外露击锤、击锤簧和压簧杆等。
该枪配用10发单排可卸弹匣,该弹匣可与柯尔特“森林人”手枪互换。弹匣解脱钮位于握把侧面,在扳机护圈根部。手动保险位于底把左侧,可通过拇指操纵。
在高标HDM型手枪上,枪管前端安装有三角形的固定准星,而OSS高标无声手枪的准星则安装在消声器上。套筒后上方有缺口式照门,可调节风偏。