关于解决方案:电子行业云MES解决方案

电子行业MES解决方案次要是针对目前电子生产制作企业面临的产品迭代降级中多种类小批量混线生产、存僵滞问题多;质量检查规范多、售后问题难追溯;生产进度难追踪、车间物料难管控、实际成本难计算等问题,提出的一种切实可行且能降低成本、提高效率的无效问题解决方案。 电子生产制作过程遇到的问题: 1.制作企业的生产治理数据量过大,手工数据管理效率低、统计不便、易错、信息反馈迟缓,甚至容易失落。且信息不能及时监控,只能做事后治理与修改保护。 2.在制品靠手工形式流转绝对落后,中间状态反馈不能同步,市场订单到生产出货产品的治理无对应性,导致库存状态凌乱,且过程品质问题造成的缺点甚至在成品整机配套上能力露出。 3.产品检验资源以纸质形式或单机电脑贮存,测验信息处于孤岛状态,传递落后,导致库存量减少。  生产企业迫切需要解决的需要点: 1、老本治理是否破除人工报表,实现无纸化办公,主动统计每个过程的生产数量、合格率和缺点代码?  2、品质追溯呈现用户产品投诉的时候,是否依据产品号码追溯这批产品的所有生产过程信息?是否立刻查明它的原料供应商、操作设施、操作人员、通过的工序、生产工夫日期和要害的工艺参数?  3、生产过程信息透明化目前仓库以及各工序线上的每种产品数量各是多少?要别离供给给哪些客户?何时可能及时交货?  4、绩效剖析和继续改善设施故障?打算调度失误?资料供给不及时?打算频繁变更?还是工艺指标和产品设计不合理?是否对产品的品质检测数据主动进行统计和SPC剖析,准确辨别产品质量的随机稳定与异样稳定,将品质隐患毁灭于萌芽之中?生产线有多少工夫在生产,生产设施有多少工夫在停转和空转?  综上,如果能够解决电子生产车间的问题,也就能实现生产过程信息的透明化,做好品质追溯,也能进一步管制企业的治理老本,欠缺绩效剖析。万界星空科技云MES零碎是面向电子车间层的生产治理技术和实时信息系统,强调的就是管制和协调,其功能模块蕴含资源管理、具体打算、生产调度、文档治理、现场数据采集、人力资源管理、品质治理、过程治理、设施保护治理、生产跟踪、性能剖析等。  万界星空科技电子行业云MES解决方案:   一、MES缓解手工数据管理难点窘境  MES通过信息系统和生产设施的标准化配置性能,对生产畛域的所有资料、燃料、零部件及废料的根底数据,产品编码清单、工艺流程及产品布局进行标准化建模。  二、MES缓解仓库治理难和品质检测问题  MES可将生产过程中的人员、设施、场地、物料和每个工艺和工序主动生成惟一的计算机代码,以代码模式在整个生产过程中进行信息流转和记录。          同时MES能够实现品质异样报警、不良解决形式记录,提供欠缺的产品全制程品质数据,为产品质量追溯与制程优化提供牢靠的数据反对。  三、MES解决生产数据贮存传递难和生产难标准问题  MES零碎实现车间无纸化,流程的规范化:  第一环节:生产打算安顿在上部接到生产打算,依据优先级、个性、资源限度和流程间的依赖关系安顿生产,依照操作的可替代性、并行性和重叠性,计算出准确的时间表、设备利用表,缩小重复劳动。 第二环节:生产批示将生产打算编辑成作业批示并传播各个终端。  第三环节:生产进度查问各个部门生产状况能够按日/月/年进行监控查问。  第四环节:品质动态数据培修记录查问、培修统计和剖析等性能的售后品质治理模块,在线实时采集信息剖析,迅速发现产品劣质、不合乎生产工艺等品质问题,提出相应的解决方案。  第五环节:工程物流和工程管制性能MES零碎能辨别生产性能的手动和主动操作性能,只有输出生产日期,等离子显示板就能够失常显示生产数据,主动纠正和改良生产过程,同时具备报警管理机制,生产超过偏差范畴及时提醒。  MES是面向电子车间层的生产治理技术和实时信息系统,依据电子行业的施行痛点,MES计划能够实现操作过程优化。但须要留神,零碎必然是与具体执行操作相结合的,要在理解本身需要点下来寻找零碎能够针对性优化的方面,从而能力真正达到满足企业迫切需要解决的需要。 

September 11, 2023 · 1 min · jiezi

关于解决方案:印刷行业MES系统解决方案

印刷行业存在许多问题,这些问题可能因地区、技术和市场变动而有所不同。以下是一些可能的印刷行业现存问题:     1.环保问题:印刷过程中应用的化学品和资料可能对环境造成净化。废墨、废纸、有毒化学品等的解决和解决成为一个重要的问题。  2.数字化冲击:数字化媒体的衰亡导致印刷品需要缩小。许多传统印刷品,如报纸和杂志,受到了在线内容的竞争。  3.老本压力:印刷行业面临着生产成本上升、价格竞争强烈等问题,这可能影响印刷企业的盈利能力。  4.技术更新:随着技术的不断进步,印刷技术也在一直更新换代。印刷企业须要一直投资于新的设施和技术,以放弃竞争力。  5.人力资源:印刷行业须要各种技能的工人,包含设计师、操作员等。然而,寻找和保留高质量的人才可能是一个挑战。  6.定制需要减少:随着市场对个性化和定制化印刷品的需要减少,印刷企业须要适应不同规格和要求的订单。  7.供应链问题:资料供给、交货工夫等问题可能会对印刷生产造成影响,特地是在面对紧急订单时。  8.版权和知识产权问题:在数字化时代,爱护印刷品的版权和知识产权变得更加简单,须要采取适当的措施来避免盗版和未经受权的复制。  9.市场竞争:在竞争强烈的市场中,印刷企业须要找到独特的卖点并建设巩固的客户根底。  10.可持续性挑战:因为印刷波及许多资源和能源的应用,推动印刷行业朝向更可继续的方向倒退是一个重要的挑战。  制造执行系统(MES)在印刷行业中的利用能够帮忙企业更无效地治理生产流程、资源和信息,进步生产效率和品质。以下是一些印刷行业中MES零碎能够解决的问题和提供的解决方案: 1.生产打算与排程:MES零碎能够帮忙制订具体的生产打算和排程,思考到订单优先级、设施可用性和人力资源等因素,从而实现更好的生产效率。  2.生产过程监控:MES零碎能够实时监测印刷机、设施和工作站的运行状态,从而及时发现并解决潜在的生产问题,缩小停机工夫。  3.品质管制:MES零碎能够记录生产过程中的要害参数和指标,帮忙实现品质管制,并在产品呈现品质问题时提供追溯性能,帮忙确定问题源头。 4.库存治理:MES零碎能够跟踪原材料、半成品和成品的库存状况,帮忙企业做好库存管制和治理,防止库存过多或过少。  5.能耗监控:印刷过程须要消耗大量能源,MES零碎能够监控能源的应用状况,帮忙企业找到升高能耗的办法,进步可持续性。  6.作业领导与文档治理:MES零碎能够提供操作员的作业领导,确保生产操作依照规范流程进行,同时治理相干的生产文档和文件。  7.数据分析与报告:MES零碎能够收集大量生产数据,进行剖析和报告,帮忙企业理解生产效率、品质程度等要害指标,从而做出优化决策。  8.设施保护治理:MES零碎能够揭示保护人员进行设施颐养和培修,缩短设施寿命,缩小突发故障。  9.追溯性和合规性:在某些行业中,须要保障印刷产品的追溯性和合规性。MES零碎能够记录生产过程的细节,帮忙企业满足相干法规和规范要求。  10.实时沟通与合作:MES零碎能够促成不同部门之间的实时沟通和合作,确保信息晦涩,缩小信息断层。  要施行适宜本人企业的MES零碎解决方案,通常须要依据企业的具体需要、流程和规模进行定制化配置。抉择适当的MES供应商,确保零碎可能与现有的生产设施和信息系统无缝集成,是胜利施行MES零碎的关键因素之一。  源码地址:拜访万界星空科技开源:https://github.com/metaxk-company/free-mes

August 29, 2023 · 1 min · jiezi

关于解决方案:医疗器械行业的MES系统解决方案

医疗器械行业的MES零碎(制造执行系统)解决方案是为医疗器械制作企业提供的一种集成化的信息技术零碎,用于治理和监控制作过程,进步生产效率,确保产品质量,以及优化整个生产流程。MES零碎通常涵盖了生产打算排程、生产执行、品质治理、设施治理等多个方面。      以下是医疗器械行业MES零碎解决方案可能蕴含的一些要害性能:  生产打算排程:零碎能够帮忙制订生产打算,合理安排生产资源,确保按时交付产品。 生产执行:MES零碎能够追踪生产过程中的要害数据,监控生产进度,确保生产过程依照规定流程进行。 品质治理:这是医疗器械行业至关重要的一环。MES零碎能够监控产品质量数据,进行质量检验和测试,确保产品符合标准和法规要求。4. 设施治理:零碎能够监控生产设施的状态,进行预防性保护,确保设施失常运行,缩小停机工夫。实时监控和反馈:MES零碎能够实时收集生产数据,提供实时监控性能,帮忙生产管理人员做出及时的决策。 追溯性和记录:在医疗器械制作中,产品追溯性十分重要。MES零碎能够记录生产过程中的要害信息,以及原材料的起源,以便在须要时进行追溯。 报告和剖析:零碎能够生成各种报告和剖析,帮忙管理层理解生产绩效、品质情况以及潜在的改良机会。 合规性:医疗器械行业须要恪守严格的法规和规范。MES零碎能够帮忙确保生产过程合乎相干的法规和规范要求。 总之,医疗器械行业的MES零碎解决方案有助于晋升生产效率、产品质量和合规性,从而在竞争强烈的市场中放弃竞争劣势。  源码地址:拜访万界星空科技开源:https://github.com/metaxk-company/free-mes

August 28, 2023 · 1 min · jiezi

关于解决方案:行业方案|数字化疫情防控运行保障解决方案

背景与需要剖析自2019年底疫情暴发以来,新冠病毒曾经肆虐寰球200多个国家和地区,迄今为止确诊病例数高达6亿多。其弱小的传染力以及近期所展现出的变异能力,导致疫情至今仍在寰球各地倒退。因而,如何助力疫情防控,保障数字化疫情防控是现阶段最重要的工作之一。 “衰弱码”运行特点多源性 :衰弱码的信息来自多个不同机构:红、黄、绿码信息由卫生衰弱机构提供,地理位置信息由通信运营商提供,填报的衰弱信息会被发送到人口库进行验证。高并发:因为衰弱码的应用场景,“亮码”的查问区域广、人群流动频繁、应用频率高,须要实现大量的高并发查问申请和疾速响应。“衰弱码”运维关注点不同机构数据获取的通顺性。这就波及到不同机构提供的接口,要能满足信息查问的需要。 不同机构的接口要能反对频繁的查问,确保接口的可用和疾速响应。不同运营商的服务水平有地区的差别,须要可能确保运营商的服务可用。大数据量高并发也能疾速响应。须要关注衰弱码背地运行的服务器、网络链路,衰弱码利用的性能。 服务器问题:一旦数据量超过服务器的承受能力,就有可能导致服务器瘫痪,应用程序暂停,衰弱码无法访问。网络链路问题:网络链路有带宽的限度,带宽的设计要正当。如果是云服务,能够做带宽大小的动静调整策略。衰弱码服务性能:服务逻辑要精简达到疾速地解决和响应信息的能力要去。数字化防控业务运维计划解决方案思路业务性能压测评估:以用户视角、面向实在用户场景与用户行为,从云端发动实在压力,对线上核酸检测、衰弱码查问等业务发动并发拜访,帮忙评估要害业务性能容量,发现性能瓶颈。业务被动监测与预警:为业务经营提供24/7小时继续、被动监测,及时发现潜在业务故障危险,提前预警,及时告警,保障业务服务稳定性。业务性能监测与优化:基于挪动端实在用户及业务零碎的端到端性能监控与剖析,实现了端到端的性能问题跟踪与诊断,帮忙企业被动发现并解决业务零碎各个环节的故障异样,促使经营、运维、开发等跨部门人员基于对立视角与层面疾速排障,保障业务服务质量。落地场景剖析业务零碎压力测试评估:依据各地疫情防控要求对核酸检测信息系统进行并发拜访压力测试,评估零碎的最大业务解决能力。业务故障疾速定位和诊断:通过被动和被动等多种工具伎俩对业务故障进行问题定位、深刻诊断和疾速排查,缩小业务服务中断危险和影响范畴。用户服务体验监测与优化:针对移动用户性能服务及性能体验进行监测与剖析,继续优化,为用户日常生活及衰弱提供保障。业务服务被动监控与预警:提供对核酸检测等要害业务服务继续被动监测,及时发现可能危险,提前预警、疾速告诉进行故障处理和业务复原。整体解决方案针对“绿码”的运行特点,为了可能保障用户可能在须要“亮码”时放弃疾速响应,云智慧推出了以压测宝、透视宝产品为根底,并联合应用场景造成立体化运维解决方案,针对各类简单IT零碎提供全方位的监控运维保障,为衰弱码业务保驾护航。 性能压测-云压测为数字化疫情防控“体检” 业务服务全链路云压测是基于实在业务场景与用户行为的压力测试服务,平台通过寰球分布式网络发动实在压力,帮忙评估要害业务(如核酸检测、衰弱码查问业务)的性能容量,发现业务解决全链路性能瓶颈,从而保障业务的稳固运行,防止业务解体带来的用户影响。 性能压测-云压测模仿实在“流量“对业务利用进行压测 基于云的弹性伸缩架构:通过云端制作压力拜访衰弱码零碎,与实在用户拜访二维码的环境保持一致,能够满足千到百万并发的压测需要。反对各类场景,适应后疫情的数字化时代:通过独有的插件式凋谢架构,反对支流协定,如HTTP/HTTPS、Socket、WebSocket等,同时反对小程序、浏览器、APP、智能硬件等各类终端。与立体化监控紧密结合,实现问题疾速发现:云压测与立体化监控高度交融,在加压同时深入分析端到端体系架构的整体性能,实时定位代码级性能瓶颈,剖析硬件资源利用率指标。端到端全链路压测:云压测容许用户从防火墙外发动压力,让压测变成有确定性的评估,能确定上线后的实在状态,从而验证衰弱码外围零碎链路上各种限流及预案的准确性,在测试中裸露全链路上的各种瓶颈和暗藏危险点。实时数据监控剖析:云压测系统提供秒级数据采集和实时统计分析,并能依据压测状况随时调整和管制拜访压力。性能压测-基于云端压测,实时剖析利用性能,定位问题瓶颈 基于压测,实时剖析利用性能,定位问题瓶颈,优化利用架构。 性能优化-数字化疫情防控业务利用性能评估剖析与优化 基于全面的监控维度及直观的可视化成果,疾速把握挪动端、浏览器、微信小程序及业务零碎衰弱状态,及时发现潜在的业务异样。 立体化监测-端到端立体化监控实现数字化防疫无死角运维 构建衰弱码全息运行数据模型:基于衰弱码零碎典型利用场景,利用运维大数据、智能算法、模块化监控、日志剖析、业务调用链路实时追踪等技术手段,实现横向+纵向的全息运维数据分析模型,为衰弱码业务的智能运维打下坚实基础。以市民体验为视角,进行业务端到端性能诊断:实现衰弱码小程序、挪动APP的用户体验剖析及行为剖析、后端代码、利用中间件及网络性能在内的业务零碎拓扑以及全环节性能问题追踪和智能化告警。 立体化监测-前端到后端关联、业务故障疾速定位剖析 通过前端挪动APP端、前端浏览器端、微信小程序与后端利用进行关联,实现端到端的治理剖析。对整个申请从用户前端到后端利用代码以及基础设施深刻追踪及问题快照剖析,帮忙用户从外到内逐渐剖析每个环节对业务造成影响的问题瓶颈及根本原因。 立体化监测-防控业务服务继续被动监测与告警 实现对要害业务服务接口API、残缺的业务服务流程进行无效监控,化被动为被动,保障服务质量。实时掌握业务的可用性、响应工夫、正确性,并且通过联合告警及时无效发现问题,晋升业务可靠性。实时被动感知各区域用户拜访业务的用户体验,及时发现服务状态异样因素,疾速定位故障和性能瓶颈产生的地位,确定故障响应的范畴。 立体化监测-防控业务全景可视化监测 计划价值与劣势价值与劣势基于实在防控业务场景与用户行为的压力测试,端到端、全方位剖析和优化防控保障利用性能问题,24/7小时防控业务继续被动监测与预警,为疫情防控业务保驾护航。 实在:实在防控业务场景,实在用户业务拜访评估精准:全方位、代码级故障深入分析和诊断,精准问题排查被动:24/7业务被动监测与提前预警,被动运维与解决规模:基于云的弹性架构,满足不同规模用户业务并发拜访全面:端到端全链路性能发现;用户、利用及业务全笼罩实时:压测数据实时剖析,及时优化,业务监测实时告警服务与优化SaaS 模式 企业购买VUH资源,自行利用云智慧云压测产品进行压力测试。云智慧技术团队提供售后反对。更灵便更不便,适宜技术能力强的用户。整体压测服务 云智慧提供整体压测服务,用户更省心省力。云智慧技术团队提供残缺的压测服务,从压测前的实践剖析、脚本制作、工作发动到后果剖析、专家报告等。零碎能力认证 云智慧联结赛迪,从第三方角度提供零碎的整体评估,并提供具备公信力的验证报告。北京赛迪认证核心有限公司是经国家认监委(CNCA)和工信部批准成立专门从事软件过程改良与能力成熟度评估的第三方认证机构。提供数字化征询产品服务 云智慧运维征询涵盖运维各畛域体系建设与专项征询 案例分享我的项目挑战多地市发展全员核酸检测工作经验不足,信息化撑持能力显著不能满足3天500万全员核酸检测工作要求。不同厂家开发的抗疫保障业务紧急上线经营,不足并发拜访性能测试和评估,屡次频繁解体,业务影响大,民怨沸腾。计划亮点5个要害业务场景5000并发测试: 扫描辨认身份证、扫码辨认采样人信息、采样明细查问、核酸检测后果上传、检测报告生成。灵便压测模型反对8个不同地市3天500万全员核酸检测工作指标。客户价值依据不同地市的业务需要构建不同的压测模型,反对8个不同地市3天500万全员核酸检测工作指标。 实在评估不同地市的核酸检测零碎的理论业务撑持极限容量指标。提供实在的测试后果,为生产环境下核酸检测利用优化提供主观实在的参考数据。开源我的项目举荐云智慧已开源数据可视化编排平台 FlyFish 。通过配置数据模型为用户提供上百种可视化图形组件,零编码即可实现合乎本人业务需要的炫酷可视化大屏。 同时,飞鱼也提供了灵便的拓展能力,反对组件开发、自定义函数与全局事件等配置, 面向简单需要场景可能保障高效开发与交付。 如果喜爱咱们的我的项目,请不要遗记点击下方代码仓库地址,在 GitHub / Gitee 仓库上点个 Star,咱们须要您的激励与反对。此外,即刻参加 FlyFish 我的项目奉献成为 FlyFish Contributor 的同时更有万元现金等你来拿。 GitHub 地址: https://github.com/CloudWise-OpenSource/FlyFish Gitee 地址: https://gitee.com/CloudWise/fly-fish 微信扫描辨认下方二维码,备注【飞鱼】退出 AIOps 社区飞鱼开发者交换群,与 FlyFish 我的项目 PMC 面对面交换~

October 19, 2022 · 1 min · jiezi

关于解决方案:解决方案|电力行业应如何应对数字化转型危机

背景与挑战随着电网公司数字化转型工作的推动和云平台、大数据、物联网、挪动化、智能化等新技术的利用,推动高效一体化网络排障定位与深刻推动人工智能及大数据技术等在电网信息系统运维中的利用,以及使用前沿科技技术,进步生产治理效益,晋升数字电网建设过程中数据的价值已成为电网公司数字化转型工作的必然要求。 与此同时,随同着电力行业数字化转型的一直倒退,相干企业业务零碎的不断更新与设施数量的大幅减少,由此引发了电力行业以下痛点: 监控层面:不足非侵入式的业务数据监控伎俩;工作流程层面:不足对立的IT服务入口和服务治理流程;人员层面:业务体系简单,不同业务部门各自为政;故障解决层面:问题产生后被动解决,且故障剖析定位艰难。基于以上背景及痛点,如何在不植入探针或 Agent 的状况下监控业务链路运行状况,业务管理人员如何统计分析要害业务指标数据,运维人员如何精确定位故障、排查故障对电力行业相干企业来说均是极大的挑战。 场景需要剖析基于上述背景及挑战剖析,电力行业具体蕴含以下运维场景需要: 非侵入式监控:通过非侵入式伎俩或工具实现对业务拓扑和业务指标数据的监控;运维数据分析:对立收集、解决、剖析业务零碎运维数据、日志数据和要害指标数据;对立解决展现:对业务零碎的物理链路、逻辑拓扑以及指标数据进行集中监控展现;故障定位剖析:对立告警信息收集、对故障进行关联剖析,精确定位故障问题和根因,晋升故障解决效率。解决方案整体产品技术架构下图为整体产品技术架构,蕴含底层立体化监控与治理工具集、中层数字化运维数据中台、顶层数据价值与治理产品集。底层立体化监控与治理工具集蕴含基础设施监控(DOIM)、业务性能监控(DBPC)以及其余开源及非开源监控工具与日志剖析(DOLA);中层数字化运维数据中台蕴含数字化运维指标管理体系(DOMM)、面向服务的配置管理(CMDB)、智能剖析(DOIA)、数字化运维数据库 (DODB )以及采控平台(DOCC);顶层数据价值与治理产品集蕴含数字化运维监控核心(DOMC)、数字化运维事件治理(DOEM)数字化运维工作台、报告报表以及数字化经营服务治理。 产品列表及性能业务性能监控工具下图为业务性能监控工具监控网络流量镜像的具体流程。通过抓取网络镜像流量的形式对业务数据进行剖析。业务发动后,业务流量通过多层链路一体化展现,直观明了地展现业务在哪个层级耗费的工夫状况。 数字化运维数据库数字化运维数据库可能实时高效的接入用户环境的多种数据源,收集用户环境中的IT和业务数据,进行对立的治理和存储,通过便捷和弱小的建模剖析工具,将数据进行关联剖析、业务建模,后果实时输入给可视化以及其余利用。 数据处理:通过数据处理pipeline对流式数据进行实时处理,内置多种数据处理组件以及数据处理模版,开箱即用,全方面满足数据预处理的要求。数据存储:高性能的分布式列式存储数据库,大大减少数据对磁盘空间的占用,在雷同容量下,可能对更大范畴的数据进行实时查问。数据计算:丰盛的聚合计算函数和弱小的计算能力,充沛利于 CPU 资源面。聚合查问的均匀响应工夫可在3秒以内,一些简略查问能够在毫秒级。 数字化运维算法平台数字化运维算法平台蕴含指标异样检测、指标预测、日志模式识别、根因剖析与举荐、多指标剖析、告警降噪等6大 AIOps 场景的20余个智能算法。提供了丰盛的算法库,开箱即用,可能撑持丰盛的运维场景。 单指标异样检测:动静基线算法、主动阈值算法、分段阈值算法、频域剖析算法、主动抉择算法多指标异样检测:多指标异样检测算法日志解析:CWdrain算法、CWspell算法指标预测:CWprophet算法、CWrnn算法根因剖析:基于调用链的RCA算法智能告警降噪:日志统计异样检测算法 数字化经营指标体系治理平台数字化经营指标体系治理平台作为下层利用侧产品监控核心重要的数据起源之一,帮忙其通过整合业务与IT资源、指标、衰弱度、告警事件,围绕业务价值构建多维度的运维监控体系,以实现可能疾速发现、剖析并定位故障,达到全方位、立体化监控的能力。 动态阈值 手动设定数据区间梯度依据数值坐落区间获取指标衰弱度动静阈值 选定算法进行指标异样检测历史数据训练取得算法模型算法后果断定指标衰弱度衰弱度设置 生死线指标重大异样时,可一票决定衰弱度。衰弱度得分是表征对象衰弱状态的绝佳指示器。 抉择参加计算的指标元素依据业务状况调配元素的权重生成衰弱素计算公式数字化运维监控核心数字化运维监控核心是一款全方位、立体化的实时监控产品,面向企业业务价值与 IT 运维的顶层布局,对业务数据以及基础设施、中间件、服务、利用、调用链等 IT 资源进行对立监控,并通过构建业务关联关系,联合指标、日志、告警等,帮忙疾速发现、剖析并定位故障。 数字化运维事件治理数字化运维事件治理基于大数据技术和机器学习算法,对立接入与解决来自于各种监控零碎的告警音讯与数据指标,反对告警事件的过滤、告诉、响应、处理、定级、跟踪以及多维分析,最终实现面向告警事件全生命周期的闭环管控。 整体计划流程在数据采集侧,通过业务性能监控工具抓取旁路流量,获取业务系统监控数据,同时通过业务流程梳理,建设业务链路拓扑,实现基于业务理论链路的监控剖析,监控数据通过kafka传递至运维数据库。 运维数据库接管到数据后,对数据进行解决(包含字段提取、拆分、合并、格局转换等)并基于场景需要将不同数据存储到不同的数据库,同时通过查问引擎为利用场景提供数据撑持。 最初,在监控核心对业务零碎拓扑和数据指标进行对立展现,基于规定进行衰弱度剖析和事件告警,通过智能运维算法和大数据分析,实现指标数据的趋势预测和对事件告警的根因剖析。 某电网企业案例分享需要剖析心愿通过不植入代码的形式来监控业务层的指标数据,造成业务链路拓扑图,跟踪业务数据流向,并实时展现要害数据;通过指标历史数据,动静提供指标预测基线、预测数值范畴;针对问题,可能进行根因剖析,疾速进行问题定位;对接以后应用的告警零碎,剖析出数据后果后,通过以后正在应用的的告警零碎去触发事件。云智慧解决方案通过DBPC工具通过旁路镜像流量的形式获取实时业务数据,以非侵入的形式实现了对业务的监控;建设运维大数据平台,实现对接管的数据进行对立存储和解决,并提取要害指标数据;利用智能算法,对历史数据进行学习,实现了对将来一段时间内的数据趋势预测;通过告警事件治理,对接客户现有告警零碎,实现了告警信息的压缩、荡涤,并且与现有的工单零碎实现关联。FlyFish开源福利云智慧已开源数据可视化编排平台 FlyFish 。通过配置数据模型为用户提供上百种可视化图形组件,零编码即可实现合乎本人业务需要的炫酷可视化大屏。 同时,飞鱼也提供了灵便的拓展能力,反对组件开发、自定义函数与全局事件等配置, 面向简单需要场景可能保障高效开发与交付。 点击下方地址链接,欢送大家给 FlyFish 点赞送 Star。参加组件开发,更有万元现金等你来拿。 GitHub 地址: https://github.com/CloudWise-... Gitee 地址:https://gitee.com/CloudWise/f... 微信扫描辨认下方二维码,备注【飞鱼】退出AIOps社区飞鱼开发者交换群,与 FlyFish 我的项目 PMC 面对面交换~

August 31, 2022 · 1 min · jiezi

关于解决方案:擎创科技加入龙蜥社区共建智能运维平台新生态

近日,上海擎创信息技术有限公司(简称“擎创科技”)签订了 CLA(Contributor License Agreement,贡献者许可协定),正式退出龙蜥社区(OpenAnolis)。 擎创科技成立于 2016 年,专一于将人工智能赋能运维治理,激活运维数据智慧,助力客户数字化转型,是被 Gartner 间断举荐的国内智能运维 AIOps 畛域标杆供应商。擎创科技自主研发的擎创夏洛克 AIOps 智慧经营平台(简称“夏洛克AIOps”),以全局经营视角解读IT运维,整合告警、性能指标、日志等多维数据,在 AI 算法运维中台的撑持下实现精准告警、异样检测、根因定位和容量剖析等智能场景,助力企业降本增效、优化经营决策。擎创科技目前已在银行、金融、制作、能源交通等多个行业部署利用。 擎创科技创始人兼 CEO 杨辰示意:“擎创科技作为国内智能运维畛域头部厂商,将基于国内当先的龙蜥操作系统开源社区,并依靠公司积攒的智能运维技术和教训,踊跃携手社区搭档在技术创新、场景拓新、利用变革等层面为开源操作系统奉献技术力量,推动智能运维在开源操作系统畛域的赋能和利用能力,同时推动操作系统的深入倒退与继续凋敝。将来,擎创科技将积极参与龙蜥社区的生态建设与搭档单干,助力打造共建、共享的社区生态。” 龙蜥社区理事樊洪光示意:“擎创科技作为智能运维 AIOps 畛域的领跑者,其自主研发的夏洛克 AIOps 大大降低了企业的运维老本,目前已为多个行业提供解决方案。擎创科技退出龙蜥社区后,将与龙蜥基于开源操作系统进行产品研发与深度适配,基于智能运维场景拓展开源操作系统市场倒退与技术创新,为推动操作系统倒退添砖加瓦。” 截至目前,已有 200+ 家企业签订 CLA 协定退出龙蜥社区,包含平安厂商格尔软件、海泰方圆,数据库厂商南大通用、巨杉数据库,中间件厂商西方通、中创中间件、宝兰德等,欢送更多企业退出。 龙腾打算可参看:“龙腾打算”启动!邀请 500 家企业退出,与龙蜥社区一起拥抱有限生态。 —— 完 ——

July 25, 2022 · 1 min · jiezi

关于解决方案:vs2022提示解决方案尚未完成分析或加载过慢问题的解决方法

呈现这个问题的起因(或者呈现解决方案中的文件加载工夫过长),通常是因为缓存文件太多,导致vs辨认的上一个解决方案,因而对本解决方案内的文件没有及时剖析导致 解决办法为:找到vs2022文件夹内的缓存文件夹(文件夹名称为:backupfiles) 默认门路为:C:\Users\用户名\AppData\Local\Microsoft\VisualStudio对该文件夹内的不须要的缓存文件进行删除后,重新启动运行 vs即可。 具体问题起因及其他解决办法参考: https://docs.microsoft.com/zh... https://docs.microsoft.com/zh...

June 20, 2022 · 1 min · jiezi

支付宝移动端-Hybrid-解决方案探索与实践

本文内容主要分为以下三个部分: 移动互联网背景下的高可用性能挑战主要给大家介绍支付宝 APP 在这几年移动互联网快速发展的阶段,其自身的一个变化与遇到的性能挑战。 支付宝 Hybrid 方案建设与演进 (H5 容器 & 小程序)为了应对前面提到的这些挑战,支付宝逐步沉淀出 2 套 Hybri 方案,分别是 H5 容器与小程序。 Hybrid 方案借助移动开发平台 mPaaS 对外输出通过 mPaaS 平台,让大家也可以去接触使用到支付宝的 Hybrid 技术。 移动互联网背景下的高可用性能挑战根据公开的 2018 年移动互联网行业分析报告,目前支付宝的月活跃用户已经超过 QQ ,成为国内第二大 App。 支付宝一开始仅仅只是一个单体应用的工具型 App,让用户可以在手机完成支付宝相关的业务查询和操作。2013 年后,支付宝逐步转型为平台型 App, 平台型 App 具有服务化、模块化、工具组件化的特点,这个时候支付宝的业务不仅仅是支付,还需要给客户提供了很多生活相关的服务,例如余额宝、缴电费等。2015 年后支付宝成长为超级 App,超级 App 会面临开放、动态化、高可用的挑战,此时支付宝里面需要支持大量复杂的业务,同时开放自己的商业能力,用自己流量助力合作伙伴。从单体应用到超级 App 的转变,其实体现了一个用户对 App 需求的变化,移动互联网用户需求的本质是服务,而不是 App,用户高频使用的 App 是少数。在 超级 App 时代,支付宝主要面临的挑战是: 1、支持复杂业务 App 的业务越来越复杂,不仅仅是内部业务,还包含了大量外部的合作伙伴。如果采用传统的 App 开发方式很难应对日趋复杂的业务场景。 2、满足业务快速迭代的需求 当前业务的另外一个特点就是需要快速迭代,变化的政策、突发事件都需要我们可以快速把新的业务需求触达给用户。但是 App 开发一个不容忽视的问题,就是应用商店审核。由于审核的存在,App 上开发的业务会有一个统一排期,比如说月底会有新版本,那么所有的业务进度都得考虑 App 的排期计划。 3、开放平台 ...

August 20, 2019 · 3 min · jiezi

阿里云与A站在一起后悄悄干了件大事

八月盛夏,“AcFun弹幕视频网站”(简称“A站”)的视频服务器全面迁移上阿里云(此处应有掌声)! A站去年与阿里云达成此项合作。在迁移过程中,阿里云提供专业技术解决方案团队,为A站建立就近迁移方案,定制专门的迁移工具,同时加以自动和人工双重校验环节,在确保数据安全的情况下完成高效迁移。整个迁移上云的工作历时半年多,完整迁移了A站建成十多年以来,累计数百万份的视频稿件。 去年6月快手正式收购A站。7月,快手派出的第一批服务端开发团队负责人飞哥与团队入驻A站。“A站要重生,播放体验不能弱于行业内。”飞哥说。 将视频系统重构优化的最佳方式是全面迁移上云,完成服务器迁移后,A站基础配置明显提升,服务器不再宕机。数据显示, A站在今年7月视频UP主数量环比增加45%,日弹幕总数增加55%,日视频投香蕉数量(用户给UP主的打赏)总数增长88%,粉丝数增长128%,日活环比实现成倍的增长。 此外,在合作过程中,A站还携阿里云在原有的基于有效时间的签名鉴权算法上,更新了一套“二次鉴权中心”的方案,借助数据算法标记出盗链网站,通过鉴权规则阻止恶意访问。方案实施后,屏蔽A站上每日多达数十亿次的盗链访问请求,释放了近90%的宽带资源。 “现在我们已经不需要去监控或关注云服务质量,阿里云能够一站式解决,在A站最关键的时候阿里云提供了最好的服务。”飞哥说。 云计算作为一项新兴技术,经历10年发展已在关键技术和应用规模上全面超越传统IT。全面上云的拐点到了,上云后综合成本下降一半,稳定性有10倍以上提升,安全性更是提升50倍。 趋势嗅觉灵敏的企业不仅将网站APP等互联网业务放在云上,还将核心系统在内的全量业务上云。其中,不仅包括创业公司和互联网公司,大型企业、公共服务机构也在全面上云。 行业分析认为,阿里云在视频领域拥有绝对的技术优势,依托于全球范围内2500多个CDN节点、120 T带宽的资源储备以及全自动的质量监测和流量调度能力,搭建超大规模的媒体处理、分发平台,每天连接10亿台设备,每年超过100EB的数据实现分发。 阿里云视频云帮助客户快速构建稳定、高效、全面、易用的企业级视频应用,已在超低延时直播、大型赛事直播、移动短视频、智能视频生产、版权视频保护、实时音视频通信等业务场景推出完整的产品与解决方案,成为文娱、教育、金融、传媒、电商、游戏等众多行业数十万企业客户的共同选择。 本文作者:阿里云头条阅读原文 本文为云栖社区原创内容,未经允许不得转载。

August 19, 2019 · 1 min · jiezi

阿里云Link-TEE获得全球首款GlobalPlatform-TEE全配置安全认证

2019年7月12日,阿里云Link TEE正式获得由国际标准组织GlobalPlatform(以下简称GP)颁发的TEE安全评估认证证书,也成为全球首款获得GP TEE全配置(支持TEE Time and Rollback PP-Module和TEE Debug PP-Module)安全认证的产品。 GP是跨行业的国际标准组织,也是全球基于安全芯片的安全基础设施统一的标准的制定者,制定了可信执行环境的标准,是TEE(Trusted Execution Environment)产品全球最权威的专业安全性评估机构。目前,GP TEE安全性认证已是公认的TEE方案在行业纵深方向发展的必由之路。阿里云Link TEE本次斩获的 “全球首款”是国内TEE安全方案在国际上的一个具有里程碑意义的事件。 此次GP TEE安全认证,由国内知名第三方安全实验室DPLS Lab提供专业测评,基于Link TEE v1.1.3软件产品,使用NXP的i.MX6QP SoC作为硬件载体,支持可信应用程序的硬件隔离,提供数据和密钥安全增强保护,可以为客户提供符合GP TEE Protection Profile全配置的商业TEE安全解决方案。 阿里云智能IoT资深安全专家董侃非常看好TEE在物联网领域的应用场景,“阿里云Link TEE是物联网设备的可信计算框架,是专为物联网设计的安全方案,可以提供不同安全等级的可信保护。阿里云Link TEE基于ARM Trustzone或C-SKY的安全扩展技术提供硬件级别的可信根,也提供软件级别的保护方案,具有代码小、运行速度快、安全等级高等优点。该产品在智能汽车、路测单元、智能售卖机、智能音响、摄像头、无人机、智能机器人、区块链可信应用和eSIM领域有广阔的应用场景和市场需求。” “市场一直在等待能增强用户信心的安全标准,”恩智浦高级副总裁Geoff.Lees 说,“阿里云Link TEE提供了这一安全保障,并开启了更快部署安全的工业和物联网解决方案的大门。我们正积极与阿里云合作,提供我们特有的价值与能力,共同制定统一的认证标准,提高安全和隐私的门槛。” DPLS Lab的实验室副主任安焘表示,“作为GlobalPlatform国内首家认可并授权的具备TEE全面评估能力的的安全实验室,有幸能担当此次阿里云Link TEE安全评估实验室,与阿里云物联网安全团队精诚合作对该产品功能符合性与安全抗攻击能力进行全面评估,并经过不懈努力最终达到GP严苛安全标准,完成了此次全球首款全配置TEE安全认证,同时该产品也是GP全球范围内认可的第三款TEE产品。” 本文作者:云媗阅读原文 本文为云栖社区原创内容,未经允许不得转载。

July 16, 2019 · 1 min · jiezi

Android-Native-内存泄漏系统化解决方案

导读:C++内存泄漏问题的分析、定位一直是Android平台上困扰开发人员的难题。因为地图渲染、导航等核心功能对性能要求很高,高德地图APP中存在大量的C++代码。解决这个问题对于产品质量尤为重要和关键,高德技术团队在实践中形成了一套自己的解决方案。 分析和定位内存泄漏问题的核心在于分配函数的统计和栈回溯。如果只知道内存分配点不知道调用栈会使问题变得格外复杂,增加解决成本,因此两者缺一不可。 Android中Bionic的malloc_debug模块对内存分配函数的监控及统计是比较完善的,但是栈回溯在Android体系下缺乏高效的方式。随着Android的发展,Google也提供了栈回溯的一些分析方法,但是这些方案存在下面几个问题: 1.栈回溯的环节都使用的libunwind,这种获取方式消耗较大,在Native代码较多的情况下,频繁调用会导致应用很卡,而监控所有内存操作函数的调用栈正需要高频的调用libunwind的相关功能。 2.有ROM要求限制,给日常开发测试带来不便。 3.用命令行或者DDMS进行操作,每排查一次需准备一次环境,手动操作,最终结果也不够直观,同时缺少对比分析。 因此,如何进行高效的栈回溯、搭建系统化的Android Native内存分析体系显得格外重要。 高德地图基于这两点做了一些改进和扩展,经过这些改进,通过自动化测试可及时发现并解决这些问题,大幅提升开发效率,降低问题排查成本。 一、栈回溯加速Android平台上主要采用libunwind来进行栈回溯,可以满足绝大多数情况。但是libunwind实现中的全局锁及unwind table解析,会有性能损耗,在多线程频繁调用情况下会导致应用变卡,无法使用。 加速原理 编译器的-finstrument-functions编译选项支持编译期在函数开始和结尾插入自定义函数,在每个函数开始插入对__cyg_profile_func_enter的调用,在结尾插入对__cyg_profile_func_exit的调用。这两个函数中可以获取到调用点地址,通过对这些地址的记录就可以随时获取函数调用栈了。 插桩后效果示例: 这里需要格外注意,某些不需要插桩的函数可以使用__attribute__((no_instrument_function))来向编译器声明。 如何记录这些调用信息?我们想要实现这些信息在不同的线程之间读取,而且不受影响。一种办法是采用线程的同步机制,比如在这个变量的读写之处加临界区或者互斥量,但是这样又会影响效率了。 能不能不加锁?这时就想到了线程本地存储,简称TLS。TLS是一个专用存储区域,只能由自己线程访问,同时不存在线程安全问题,符合这里的场景。 于是采用编译器插桩记录调用栈,并将其存储在线程局部存储中的方案来实现栈回溯加速。具体实现如下: 1.利用编译器的-finstrument-functions编译选项在编译阶段插入相关代码。 2.TLS中对调用地址的记录采用数组+游标的形式,实现最快速度的插入、删除及获取。 定义数组+游标的数据结构: typedef struct { void* stack[MAX_TRACE_DEEP]; int current;} thread_stack_t;初始化TLS中thread_stack_t的存储key: static pthread_once_t sBackTraceOnce = PTHREAD_ONCE_INIT;static void __attribute__((no_instrument_function))destructor(void* ptr) { if (ptr) { free(ptr); }}static void __attribute__((no_instrument_function))init_once(void) { pthread_key_create(&sBackTraceKey, destructor);}初始化thread_stack_t放入TLS中: get_backtrace_info() { thread_stack_t* ptr = (thread_stack_t*) pthread_getspecific(sBackTraceKey); if (ptr) return ptr; ptr = (thread_stack_t*)malloc(sizeof(thread_stack_t)); ptr->current = MAX_TRACE_DEEP - 1; pthread_setspecific(sBackTraceKey, ptr); return ptr;}3.实现__cyg_profile_func_enter和__cyg_profile_func_exit,记录调用地址到TLS中。 ...

July 15, 2019 · 1 min · jiezi

阿里资深技术专家的10年感悟

阿里妹导读:阿里有许多土话,比如“方法总比困难多”、“不淘汰自己就会被别人淘汰”、“你感觉不舒服的时候,就是成长的时候”。每一句都在激励我们向前。生活总不缺困难和磨练,痛苦的时候,只有转变思维,才能蜕变。今天,阿里巴巴资深技术专家无相分享他在阿里这10年来的几点感悟。今天很残酷,明天更残酷,后天很美好,熬过明天晚上,才能看到后天的太阳。 2019年的上半年,我密集地写了 tbbpm idea 插件,终于比较圆满地解决 idea 插件的开发问题。经过这件事,内心有股强烈的冲动,促使我写下这些年面对痛苦时,我的一些解决问题的方法和感悟。 1. 一个人走得快,一群人走得远“一个人走得快,一群人走得远”,这句话是阿里的土话。没有这些年的编程经历,不会深刻地感受这句话背后逻辑与力量。一个人持续做一件工作量较大且较长期的事情时,对心力的考验是很大的。当多人协同时,心力压力能够得到很大的缓解。 Knowledge is commonly socially constructed, through collaborative efforts toward shared objectives or by dialogues and challenges brought about by differences in persons' perspectives.Salomon 《The Costs and Benefits of Pair Programming》这篇论文的研究表明:结对编程能够改进设计质量,减少代码缺陷(代码行数减少,测试通过率更高),减少员工离职风险,提升软件技能。团队解决问题的速度变快,同时更加愿意坐到一起工作。 2. 当你不舒服,难受或陷于困境时,应该停下来思考在写 tbbpm idea 插件时,我花了三年(准确来说是3个春节)才写成,idea 的设计插件在业界无参考标准,不能很好地快速进行。记得在 eclipse tbbpm 插件时,因有业界源码参考,用了两个通宵原型就做出来了。Tbbpm 是一个闲暇时间的产物,只能利用春节这样的大长假才能开发。我希望自己能够在极短的时间内完成,然而,第一个春节与第二个春节都没有成功。在第三个春节时,关键的拖拽依然没有很好的搞定,心力已经接近憔悴。屡次失败之后,我不得不开始反思,是不是我做这件事的方式错了?是不是我的欲望已经超越了我当前的能力。 于是,那时候我停下手头的工作,冷静的地思考了2天。 这里举个当时的例子,idea 插件绘制表单的困境:因为用 swing 的方式来构建流程时,使用很多原生的库、GUI、JformBuilder,觉得画一个表单很困难, 尽管有些产品商已经用了,依然非常难用。静下来思考后,通过 google,找到了 miglayout 这个库,问题才得以解决。 困境是个人成长的最好机会,放弃、逃避、拒绝思考,就意味着放弃成长。如果遇到困境不自知,不解决,则会出现昨日所不知不能者,今日仍是不知不能;去年所不知不能者,今年仍是不知不能。 同时,最近有很多同学向我反馈,遇到困境时,通过个人的努力依然不能突破。这种情况下,可以尝试另外一条路,像《能力陷阱》这本书所说的一样,可以引入外部的力量。 3. 学习能力与思维模式是一个人的核心竞争力没有自学能力的人没有未来。李笑来 3.1 首先承认自己的不足 ...

July 11, 2019 · 1 min · jiezi

JVMSANDBOX从阿里精准测试走出的开源贡献奖

阿里妹导读:稳定性是历年双11的技术质量保障核心。从 2016 年开始淘宝技术质量部潜心修行,创新地研发了一套实时无侵入的字节码增强框架,于是「JVM-SANDBOX」诞生了,并且顺手在 MTSC 大会上拿了开源贡献奖,今天,我们来瞅瞅这个拿奖的项目。 在近日举行的中国移动互联网测试开发大会(简称MTSC大会),来自淘系技术质量开源项目「JVM-SANDBOX」以及淘系同学参与维护的「 ATX」 包揽了 MTSC 2019 年度开源贡献奖,表彰过去一年在测试领域开源项目中的突出贡献。其中,「JVM-SANDBOX」致力于为服务端稳定性领域提供实时无侵入的字节码增强框架。 一、JVM-Sandbox的诞生功能回归、业务/系统监控、问题排查定位、强弱依赖、故障演练等是阿里 10 年双十一沉淀积累下来的稳定性专项,也是历年双十一质量保障的核心要素。要有效、轻量级地实现这些稳定性专项,都会触及到一块底层技术—— java 字节码增强。如果每个专项都能自己实现一套字节码增强逻辑,实现的门槛高、投入和维护成本高,且不同专项间相互影响造成不可预知的风险。如何屏蔽字节码增强技术的高门槛,降低成本,同时又能支持上层多个专项功能的快速实现和动态管理,成为淘宝技术质量部的目标。从 2016 年开始我们潜心修行,创新地研发了一套实时无侵入的字节码增强框架,于是 「JVM-SANDBOX」 诞生了。 对上面提到的专项进行抽象分析: 故障演练:在运行前,抛出异常或增加运行时间,即:干预方法的执行顺序和改变返回值;强弱依赖梳理:系统运行时,实时记录系统的对外调用情况,即:感知方法的入参和返回值;录制回放:运行时,记录方法的入参和返回值,回放时,不真实对外调用,而是直接返回录制时的返回值。即:感知方法入参和返回值,干预方法执行顺序,改变返回值;精准回归:获取每个请求的行调用链路,根据行调用链路进行场景去重,根据代码改动的情况和行调用链路确定需要回归范围,即:运行时行链路感知。不难发现,要解决这些问题本质就是如何完成 java 方法的环绕管控和运行时行链路的获取,即 AOP 框架的解决方案。目前常用 AOP 框架的解决方案有两种:proxy 和埋点。proxy 的优点在于已实现了统一的 API,减少了重复投入,但是不能实时生效,需要系统编译重启。埋点的优点在于动态生效灵活度高,但是没有统一 API。 要快速解决上边的三个问题,我们需要的 AOP 解决方案必须具备两个特性: 动态可插拔,即实现埋点方式的统一的 API;无侵入性,即解决 JVM 类隔离的问题。基于以上需求,我们研发了 JVM-Sandbox。 二、实现方式JVM-Sandbox 由纯 Java 编码完成,基于 JVMTI 技术规范,为观察和改变代码运行结果提供了即插即用模块接口的容器,提供两个核心功能:实时无侵入 AOP 框架和动态可插拔的模块管理容器。 2.1 JVM-Sandbox的核心功能 使用埋点技术提供统一的 API,来实现无需重启的 AOP 解决方案;使用容器完成 JVM 类隔离,来解决侵入性问题;提供容器管理机制,来完成各种容器的管理。2.2 JVM—Sandbox的核心事件模型 BEFORE、RETURN 和 THROWS 三个环节事件的正常流转和干预流转。 2.3 整体架构 ...

July 5, 2019 · 1 min · jiezi

MaxCompute-项目子账号做权限管理

场景: 一个企业使用多款阿里云产品,MaxCompute是其中一个产品,用的是同个主账号,主账号不是由使用MaxCompute的大数据同学管理,  大数据同学使用的是子账号。大数据同学日常需要给MaxCompute项目 操作新增子账号(add  user),新的子账号授权(grant xx on project/table)等操作,即日常权限管理。 背景知识: MaxCompute项目权限管理默认只有owner可以操作,而MaxCompute项目的owner只能是主账号。子账号开通MaxCompute并创建项目,项目的owner依然是对应的主账号。DataWorks中,子账号拥有项目空间的“项目管理员”或“安全管理员”角色,都只是拥有对应DataWorks的操作权限,并不能操作MaxCompute 项目的权限管理。具体可参考《DataWorks角色权限和MaxCompute 角色权限关系》。解决方案: 指定一个子账号作为大数据MaxCompute的权限管理账号,让主账号给该子账号授admin role   --如主账号是bob@aliyun.com,作为日常权限管理的子账号是Allen grant admin TO ram$bob@aliyun.com:Allen; 注意admin可以满足常用的一些日常权限管理,但并不能代替owner做所有管理,此时还是必须要owner才能进行操作。 本文作者:海清 阅读原文 本文为云栖社区原创内容,未经允许不得转载。

July 4, 2019 · 1 min · jiezi

对话阿里敏捷教练-成功辅导过淘宝闲鱼他都是如何帮助团队实施敏捷的

为了让大家对敏捷有更多的了解,小编特意采访了阿里巴巴高级技术专家、敏捷教练张燎原。他是如何看待敏捷、如何帮助团队落地敏捷的,作为研发团队的一员,我们可以从哪些地方着手敏捷,以下是对他的采访。 嘉宾简介:张燎原,阿里巴巴高级技术专家,他是敏捷和精益方法的积极实践者和推动者,具有十多年软件研发一线实践经验,经历过消费电子、通信及互联网多个行业,长期从事研发管理、研发教练及组织转型工作,曾负责Nokia全球大规模敏捷导入实施和转型辅导,成功帮助淘宝、闲鱼、阿里云等事业部引入精益产品交付和创新方法,帮助实现DevOps转型。译有《程序员度量》、《软件驱魔》等。同时,他热衷编写代码和开源,涉及软件设计、测试驱动开发、代码重构、遗留代码的维护和持续集成及交付。工作之余,他还擅长画画和摄影,被同事戏称“最会画画的敏捷教练”。 1、燎原你好,我知道你是敏捷和精益方法的积极推动者,在阿里也辅导过淘宝、闲鱼等多个团队。从事敏捷这么多年,特别好奇,你是如何看待敏捷和精益的呢? 张燎原:以前,敏捷作为一个很时髦的概念,大家总是反复在提,就像现在的DevOps一样。在我看来,不论是敏捷、精益还是DevOps,能不能解决问题, 这个才是最重要的,一切不以解决实际问题的概念炒作都是耍流氓。去年我和何勉老师(阿里巴巴敏捷教练团队负责人)在一起讨论, 我们是在做敏捷、精益的转型还是其他的什么,后来我们决定提升研发效能。作为一个研发团队,能够持续快速高质量地交付有用的价值,才是我们觉得作为一个研发团队要追求的。 提升研发效能,主要分两点来看,第一个是回答如何持续快速高质量的交付的问题。在交付团队里,大家协作特别好,写的代码要没有太大的问题——高质量,发布特别快。所以,我们知道的比如看板、Scrum是解决我们协作的问题;测试自动化、CI/CD以及DevOps是为了帮助高质量的发布;我们提倡的DDD、Clean Code,是为了让我们的代码能够更健壮、质量更好、更Clean,大家在协作的时候,能够通过代码来交流,这些都是提升交付能力的手段和实践。 另外一点是,就要回答什么是有用的价值这个问题。对很多工程师来说,大家可能更关心代码写的好不好,从产品那拿到的需求,大家基本都认为是对的。很多时候产品提了一个需求,一个工程师可能要做一天甚至是一个礼拜才能完成这个需求。但是,如果这个需求没有价值,那就相当于白干了。所以这个时候,我们要走到源头去看一看,这个需求是否是有用的,对我们的业务有没有帮助,是否值得我们投入。 所以你问我如何看待敏捷,我不会说是要快速响应变化,因为我觉得这样还是有点抽象。回到研发的本质,我们是要持续快速高质量地交付有用价值,从解决阻碍我们达成这一目标的问题出发,选择相应的方法和实践,最终解决掉这些问题,这才是实实在在、对我们有帮助的。 2、你是如何帮助团队落地敏捷的,这中间有没有遇到一些困难? 张燎原: 我觉得首先是让大家看得见,对问题形成一致的理解。当我们开始在团队落敏捷时,大家会说我没有问题,所以首先我们要让大家看得见问题,在问题上达成共识。这样,目标才会一致,做事才能齐心。 其次,大家在解决方案上要达成共识。有的时候,针对一个问题,可能有A解法,也可能有B解法,但我们要一起探讨是用A还是用B。例如,B可能见效快,但不持久;A见效慢,但是持久。这个时候,我们得去找一个折中的解决方案。 再次,要有一条明确清晰的改进路径。解决方案要能解决问题,但同时也要给大家改进的信心。每个阶段都能解决一些问题,通过持续地发现和改进问题牵引着大家往前走。这种改进不应该都是烟斗式的,即开始会导致效率先降下来,然后才会慢慢持续往上爬。 最后,有节奏地给出有效反馈。通过在合作过程中,通过数据也好,或者观察到的问题也好,持续地给团队反馈,让大家明白自己是在正确的路上行走的。 这几点对我们来说都是比较大的挑战,但比较好的是,我们现在能驾轻就熟来应对。还有一点,大部分时间,我们是站在全局的视角来看问题,这和具体的职能团队是有差别的,他们更多是站在自己的职能的角度。大家看问题的视角不一样,在沟通的时候,也就需要更有同理心。 3、在敏捷实施过程中,给团队建立信心真的很重要,能具体说说你是如何在短时间内给团队建立信心的吗? 张燎原:在实施转型或提效的时候,需要持续地给大家信心。我们不太建议一股脑地给一个完整的解决方案,把之前的全部推翻掉,就按照新的来。因为我们接触的团队,基本上都是工作在现有的业务上的,哪怕是创新型的一些团队,大家之前也一起磨合了很长的时间,大家都有自己熟悉的工作方式和习惯。 我们团队之前有一个案例:《4个迭代,从批量交付到持续交付转型》,就非常典型,每做一个迭代都是让大家看到收益,然后才有信心做第二个迭代。例如,当时的第一个迭代是把所有的职能端到端的拉齐,让大家看到整体。这个时候就减少了各个职能之间的交流误会,整个沟通就顺畅了。然后在整个可视化的协作流程中,大家就会发现:喔,原来需求有这么多反复、原来需求太大了,甚至需求都没搞清楚就开始了。其实很多时候,这些都是大家自己发现的。当解决了协作的问题,大家有了信心,就开始着手解决需求的问题。当需求澄清的问题解决后,又会发现发布速度是不是可以更快一点,原来一个月发一次,现在是不是可以每个礼拜都能发。这样每一个迭代都会有一些点得到了改进,并且也能够持续暴露其他的一些问题,能够让大家朝比较理想的状态前进。 如果你告诉大家落一个解决方案需要半年的时间说半年之后才能看到结果,你做了一个月没结果,大家能接受,第二个月没结果,大家可以坚持,如果第三个月还是如此,可能就没有然后了......这是我们在制定解决方案的时候需要特别考虑的。 4、你们的敏捷实施或提效一般多久能见到效果? 张燎原:从目前在阿里接触的一些团队来说,一个月内,基本上就能够看到一些明显的效果了。当然这跟我们合作的团队也有很大的关系,大家彼此都挺配合的,甚至有的时候他们比我们还专业,他们会说,燎原老师,你看这种方式是不是会更好。然后我发现他给出来的点可能是我都没想到的,所以在这个过程中,我们也是在相互学习。 当然,改进是一个持续的过程,目标越大,要投入的时间可能就会越长。 5、一般什么时候可以判断说这个团队辅导OK了? 张燎原:一般情况下,在辅导开始的时候,我们都会有特别明确的目标,我们会清晰地把需要改进的问题定义出来,让大家看得见,找出根因,而不仅仅是现象。随着问题逐渐被解决,后面我们会有意识的慢慢抽身出来,看没有我们的时候,是不是也能够work起来,如果我们发现没有我们也行,这个时间也就到了。 在这个过程中,很重要一点,我们要善于发现和培养有潜力的同学,在被辅导团队留下种子,这些同学会是团队持续改进的生力军。 6、有什么方法可以帮助一些团队发现自己的问题? 张燎原:我觉得能做IT的人都是聪明人,如果他没有发现这个问题,更多的是因为他没有这个意识,没有意识到自己要去看有没有问题。所以我们会通过其他的一些渠道,让大家去意识到这件事。老实说,大家不缺方法,缺的是意识,我们希望能够让大家意识到这件事情的重要性,如果我们没有一个很好的研发能力去支撑业务效能的话,我们也很难把业务效能做好。虽然很多时候我们只觉得业务效能很好很重要,我承认确实很重要,但研发效能是基础。如果你有一个很好的点子,但是没有很好的这种研发团队,没有研发方式来支撑。你的点子,也实现不了。 7、如何让更多的有需求的团队也能得到你们的支持? 燎原:确实,让我们去辅导一个团队,肯定没有问题,但是如果让我们同时去辅导很多的团队,精力肯定就忙不过来,一个人一天就24个小时。这个时候我们会有一些策略,例如,就像前面所述,我们会培养业务团队的一些同事,让他们成为这方面的专家,就像一颗种子,他也会发展壮大,然后他自己做的一些事情,对他所在组织都会有很大的帮助,这是一种杠杆撬动的力量。另外,我们还会通过其他的一些手段,例如线上、线下的培训课程、最佳实践文章、案例分享,以及鼓励更多同事把他们一些好的点子share出来。我相信这样一个一个的点,都能够帮助规模化。 还有另外一个很重要一点,我们所在的研发效能团队,通过各个业务部门的实践,对实践方法及不同场景的总结沉淀,会形成一些体系化的东西,然后与工具做更多的结合,让大家通过工具就可以轻松上手,把好的实践最大化。例如,现在Aone的看板,看板上为什么分那些阶段、为什么有那样的一条条泳道、需求是怎样移动的,最早我们是用物理看板,但是现在我们把它都融入到产品里,团队建好自己的项目空间,就自动会有一块项目看板,从而让好的实践在更多的团队得到使用。 8、作为研发团队的一员,我们每个人可以如何着手去实施敏捷? 我觉得单独从了解方法或知识的角度来说,看完了一本书或者一篇博客,10天半个月可能也就忘了。但是我们可以从自己现实当中的问题出发,比如做为程序员可以去思考,如何能够让代码变更高效地发布。例如你可以搭一个持续集成的流水线,让大家的代码一提交就触发自动化的检查、自动化的测试和部署,把这个做好就是往敏捷,往研发效能的提升上就走了一大步。 对产品经理来说,需求应该如何组织,是否都有对应的目标,任务朝需求对齐,需求朝目标对齐。对于一线管理同学,可以思考整个团队的能力模型,团队的协作当中有哪些问题,比如测试和开发同事、前端和服务端之间的协作有没有更好手段,让大家的协作更高效。这样每个人都站在自己的角度上,改进一点点的话,形成合力。大家再在站在系统的角度,串起来一起看,就会改进很多。 即使是一个刚入职场开发同学,也可以思考代码能不能写的更clean,减少code smell,把这代码写的别人一看就懂,每一段代码都能有很好的单元测试,减少维护成本。这些都是在提升研发效能,在实践敏捷。敏捷不是挂在嘴上,而是落在每天的工作里。 9、最后,本周六你的分享《从持续交付到业务创新》,希望能给大家带来哪些收获? 张燎原:很多时候我们做工程师,都是站在自己的位置去看待问题,很少有机会能够站在全局,端到端的角度去看待问题。这次分享我希望能够带着大家一起,从研发的端到端、从需求到交付,去了解我们可以通过哪些手段去提升研发效能,以支持我们提升业务效能。 对于每一个不同的角色,能够富有同理心地去看待软件研发过程中的其他职能的工作,真正做到“眼高手低”:即看到整体,落到实处,整体形成合力,往组织效能最大化的方向去努力。 阿里有一句话叫做:一张图、一场仗,一颗心,首先画好一张整体的图,把团队之间协作的图画好,我们才能得对齐,上下同心,然后把这场仗打好。期待与大家的交流。 本文作者:云效鼓励师阅读原文 本文为云栖社区原创内容,未经允许不得转载。

June 28, 2019 · 1 min · jiezi

蚂蚁区块链BaaS开放在云端落地于实体

自 2018 年 6 月上线以来,蚂蚁区块链 BaaS 不断在技术上实现突破,形成自身独特的优势,并做为行业领军者在不同领域的几十个场景实现落地。在区块链的商用时代加速到来之际,通过开放自身的技术体系,与国内外各合作伙伴一起来构建一个更大的信任体系,赋能于全球实体经济,将是蚂蚁区块链接下来整体的战略路线。什么是蚂蚁区块链 BaaS蚂蚁区块链 BaaS(Blockchain as a Service)是基于蚂蚁金服联盟区块链技术和阿里云的开放式“区块链即服务”平台。它将区块链作为一种云服务输出,支撑了众多的业务场景和上链数据流量,是行业区块链解决方案的基础。蚂蚁区块链 BaaS 致力于搭建一个开放、协作的平台,为全球的企业和个人提供便捷的服务,为世界带来更多平等的机会。 为什么要建立 BaaS(而不是单一的区块链技术)基于云平台开放区块链技术,可以充分利用云计算本身的弹性、高可用性和灵活性。同时,又能充分发挥区块链本身的信任基础设施的能力,比如多方共识、不可篡改、可信。具体来讲,有三大优点: 1、客户可以根据实际需要来选择、定制适合的区块链服务; 2、客户可以快速地实现部署使用,从而节省了宝贵的时间; 3、结合以上两大优点,BaaS 可以使客户在业务和应用上的投入成本达到最小化,让解决方案在各行业中完成高效复制。这样,BaaS 就变成了区块链在各行业解决方案的基础设施,提供可靠、扎实的信任基础。 蚂蚁区块链 BaaS 的优势2019 年 4 月,由蚂蚁区块链团队运营的阿里云 BaaS 被顶级咨询公司 Gartner 评选为全球 6 大领先区块链技术云服务商之一。从平台能力来看,蚂蚁区块链 BaaS 具有五大优势: 1、高性能、高可靠。平台不仅具有高速并行共识能力,达到秒级交易确认,也具备高可靠和高容错性; 2、信任隐私保护。平台不仅在区块链层实现了非常高的隐私保护能力,在 BaaS 服务层也提供了对于企业身份、实人身份的认证的能力; 3、简单易用。平台极大地减少了客户的区块链投入成本,降低了使用门槛,使客户不需要了解区块链很深的细节,也能利用该技术的能力赋能业务; 4、跨网络。区块链有一个相对来说深入人心的特点——去中心化。蚂蚁区块链 BaaS 在跨网络、跨不同云的平台上,以及跨公有云和用户IT环境的场景下,提供了相应的支撑和自动化的部署能力; 5、云上的网络安全。平台充分利用了阿里云的云平台安全能力(如 VPC 网络)来保证区块链网络的安全。 蚂蚁区块链 BaaS 的核心功能在企业级的联盟链场景下,蚂蚁区块链 BaaS 的核心功能包括以下几个方面: 1、联盟链管理。联盟链的创建以及联盟组织的管理,是 BaaS 提供的一个基本能力; 2、身份认证。每一个参与联盟链的企业,都需要通过认证流程。平台会颁发证书来帮助客户认证自己在联盟链上的身份; 3、自动化部署。整个平台对于区块链采用自动化部署。这种方式可以非常迅速,低成本地部署区块链平台,让客户迅速地拥有自己的区块链; 4、区块链能力。蚂蚁区块链技术能力的输出目前主要在两个方面,一方面是存证平台,针对区块链的存证场景提供高性能、高可靠平台。另一方面是智能合约平台,提供可编程的智能合约运行环境; 5、业务配置。不同的场景,不同的业务,其业务数据和业务工作流都是完全不同的。在这方面,平台提供了业务视图,workflow业务订阅服务来帮助客户配置面向业务的应用; 6、开发支持。区块链对于各个场景的应用都需要创新,也需要技术上的开发。平台提供了完备的技术开发相关组件,帮助用户落地最佳实践,拓展更多场景。 蚂蚁区块链 BaaS 的技术架构下图是蚂蚁区块链的产品大图,其中 BaaS 的技术架构主要分为三层: 1、底层是 BaaS Core,基于对主机以及容器提供灵活支持的云资源管理平台,实现跨平台的便捷运行和部署。对于可信硬件,即基于阿里云的神龙服务器提供相应的硬件服务,可以提供一个高可靠、高隐私保护的可信执行环境。除了存证平台和智能合约平台以外,在同构链跨链服务的基础上即将推出异构链跨链服务。目前的市场上,单链或者一条链存在自身的局限性,未来对于建立信任的基础设施、互信的生态,跨链技术将成为其中非常重要的一环。目前 BaaS 平台已通过跨链服务,实现了内部的互联互通,同时也可以通过智能合约和跨链服务,对于外部的互联网上的可信数据源进行访问。此外,对于其他的基础能力,例如联盟管理、安全隐私、证书密钥管理等,BaaS Core 都有相应的功能和支撑。在提供自主研发的蚂蚁区块链体系同时,BaaS 平台也支持开源体系以更好地满足客户多样化的需求,包括企业以太坊 Quorum和Hyperledger Fabric。 ...

June 27, 2019 · 1 min · jiezi

支付宝技术风险负责人陈亮把事情做到极致技术的差异性才会体现出来

“很多事情,说出来很多人都在做,但是只有真正做到极致,技术的差异性才会体现出来”,蚂蚁金服技术风险部研究员陈亮(花名:俊义)在接受 InfoQ 采访时如是说道。在此前的支付宝技术嘉年华,InfoQ 对支付宝数次技术架构升级的见证者及主导架构师陈亮进行了独家采访,首次系统了解稳定支撑“双十一”等多次实战背后的支付宝技术风险体系。 支付宝技术风险体系2007 年,陈亮加入支付宝,负责支付宝搜索及通信中间件架构。在之后的十年时间里,陈亮先后负责过支付宝交易拆分整体架构,这成为支付宝数据库拆分架构标准;支付宝三代架构单元化及容灾整体架构,实现异地多活,这成为支付宝单元化架构标准。如果简单总结在支付宝工作的前十年,陈亮表示: 前十年,我一直在做可扩展性相关的工作。在这期间,问题和需求驱动占据上风。陈亮回忆道:“最初的支付宝是单体架构,一个小型机加两个 Java 写的 APP,那年 DBA 就找过来说如果不进行数据库拆分,很难扛住业务发展”。 经过系列改造,这一工作终于完成。当时,陈亮以为这个架构起码可以支撑支付宝未来五到十年的发展。然而,双十一很快就来了,超大规模瞬时流量的冲击对架构提出了全新挑战,整个团队又开始马不停蹄地进行异地多活相关项目研发。 彼时,支付宝有两个主要应对技术风险的团队,一个叫技术质量团队,另一个则是运维团队。技术质量主要是各种功能测试,并解决程序 Bug、故障等问题;运维团队主要是生产偏基础设施以及应用、DB 运维管理保障,同时也会自发性地做一些技术风险相关的事情,但并未形成体系化的技术风险组织阵型及打法。 2013 年,支付宝技术团队提出质量 2.0 战略,其目的是希望在技术风险领域有一些延展,体系化沉淀 Bug 检测等方面的能力。自此,支付宝的技术风险体系建设逐渐步入正轨。 组织架构演进 2014 年,质量技术部成立希望从全域视角解决技术风险问题。但是,质量技术部并没有运维团队,主要就是通用质量检测和高可用保障相关的技术解决方案,并驱动各业务部门的技术团队落地。当时,质量技术部人员并不多,是一个小而精悍的中台部门。 经过一年多的发展,质量技术部发现仅仅依靠质量技术并不能解决生产上的各种故障风险。虽然,质量技术部会关注生产研发过程,但主要精力在于对各业务技术团队输出技术风险,比如高可用及通用质量检测的解决方案,高可用及资金保障方面尚未出现成型的平台体系。虽然当时的全链路压测和持续集成平台已有所成型,但关于高可用等并没有成型的平台。 当时,技术团队判断,不能只从质量角度看风险,而需要从更高的维度和更全面的视角看待风险。2015 年,质量技术部升级为技术风险部,专注研发及架构技术风险问题,做相应的解决方案和落地平台。 2016 年,陈亮一手打造了支付宝的 SRE(Site Risk Engineer,参考谷歌的 Site Reliability Engineer)体系。技术风险部增加 PE 和 DBA 团队,PE 团队直接对生产环节中的运营、操作等做技术风险防控,整个大团队的职能属于 SRE。据了解,这也是国内第一个 SRE 团队。 陈亮发现,传统的运维思路和文化已经无法彻底解决支付宝的稳定性问题,因此需要成立 SRE 团队。事实上,传统的运维方式侧重于靠人肉解决风险,不管是调参还是更改配置,都无法从本质上解决支付宝的稳定性问题,相反会让运维人员的工作成就感很低。说到底,运维领域的问题终究还是软件问题,需要建立软件平台更好地管理风险。 在组建 SRE 团队的过程中,陈亮认为最难的反而不是技术层面的推进,而是让团队工程师,包括整个公司认同 SRE 的价值,这需要让所有人理解 SRE 可以解决哪些新的问题以及传统的思维方式为何不可取。 据了解,支付宝的 SRE 团队主要由研发、运维和测试人员组成,八成运维人员都需要写稳定性相关的代码。团队组建完成即全面开展故障自动定位、自适应容灾、防抖、精细化高可用等工作。其中,防抖要保证任何网络或基础设施抖动,用户都无感知;精细化高可用,又叫单笔高可用,其颗粒度可以精准到用户的每一笔交易,远远优于行业内的机房级高可用。 2016 年,SRE 团队建设了很多平台和能力。同时,技术团队发现了两个极为重要的现象,一是生产故障不是必然的,通常都是偶然性的;二是生产故障是低频的。这带来的问题就是故障样本很少,没有办法证明在真实故障到来时平台是否具备能力应对。也就是说,SRE 团队建设的防御系统的可靠性,无法充分验证。 2017 年,SRE 团队成立了专门的、独立职能的技术蓝军,其主要的工作就是发掘防御系统的弱点并发起真实的攻击。技术蓝军并不对各业务方负责,只对这套防御系统的稳定性和可靠性负责。 在技术蓝军看来,发生故障是必然的,只是时间早晚而已,技术蓝军会想尽办法触发这些故障,以保障在故障真实发生时,团队有足够的应付能力。目前,全栈级的技术攻防演练每周都在进行,而故障防御系统及不断优化的高可用架构则是由 SRE 团队的红军与各业务深度合作,沉淀、构建出来的。 ...

June 14, 2019 · 1 min · jiezi

拔掉数据库的电源会怎样阿里云数据库新型灾备架构让云端容灾有备无患

拔掉数据库的电源会怎样?假设我们拔掉数据库的电源会怎样? 在日前举行的阿里云“企业级”云灾备解决方案发布会上,阿里云智能技术战略总监陈绪就来了一场现场“断电”演示,拔掉了数据库的电源。 (直播回放:https://yq.aliyun.com/live/1104/event) 猜猜现场发生了什么? 数据丢失,业务瘫痪,企业资金受损? 上述情况统统没有出现!没有出现任何数据丢失,也没有业务瘫痪,10秒后,上云企业的业务就完全恢复了。 那么这是如何实现的呢? 在会上,阿里云智能数据库产品事业部技术总监天羽为大家全面解析《云时代,数据库新型灾备架构》,详细介绍了在混合云架构下,从异地备份、容灾、双活到统一管理的数据库一站式灾备解决方案。 有了云数据库新型灾备架构,即使断电又何妨?通过阿里云提供的DBS、DTS、HDM等服务,您的企业也可轻松构建灾备体系,做到“有备无患”。 墨菲定律 鸡蛋不能放在一个篮子里对于每个企业而言,数据库都是其最为核心的资产。但是单点故障是不可避免的,因此为了提升数据安全,需要做的就是数据冗余。 国家对于数据库灾难恢复能力也定义了相应的标准。对于位于等级2~3的一般业务而言,需要每天进行备份;对于位于等级4的重要业务而言,需要每天全量+增量备份;对于等级5的关键业务而言,要求数据丢失不能超过半个小时,并且要求在分钟级别恢复业务;对于位于等级6的核心业务而言,则需要做到数据零丢失。 阿里巴巴数据库从备份到多活的发展经过了以下历程: 2012年之前,阿里巴巴采用的是异地冷备+热备方案,提供只读副本,当时异地冷备和热备可能出现异地延时比较长的问题,导致出现灾难之后敢不敢进行数据库切换成为一个问题,可能现在很多传统企业还在使用该方案。 2013年,阿里巴巴通过数据库实时日志的解析能力实现了同城双活。 2014年,阿里巴巴实现了异地双活。 2015年,阿里巴巴就实现了中美同步以及多个地域、多点写入的数据同步策略。 2016年,阿里巴巴实现了分布式数据强一致的能力以及异地多活能力。 在不断提升阿里巴巴灾备能力的过程中,我们也在阿里云上孵化了数据库备份(DBS)、数据传输(DTS)、混合云数据库管理(HDM),搭建从备份、容灾、双活及混合云统一管理的一站式云灾备解决方案。 对于等级1到等级4的业务而言,可以通过DBS将数据实时备份到阿里云OSS上,该方案具有低成本、秒级RPO的优势; 对于等级5的业务而言,可以通过DTS数据传输服务将本地IDC或者其他云产商的数据库备份到阿里云上去,实现热备或者双活解决方案,实现秒级RPO和秒级RTO。 阿里云数据库新型灾备方案众所周知,传统灾备解决方案存在成本高昂、实施困难、运维复杂、RTO和RPO无法保障等问题。 阿里云拥有遍布全球安全可靠的数据中心,是企业用户天然的异地灾备中心。阿里云的新型灾备方案可以为您提供低成本、高质量、开箱即用的数据库灾备服务。 1、数据库备份服务DBS数据库备份服务DBS结合阿里云对象存储服务OSS,能够为用户提供秒级RPO以及低成本的特性,并且实现了国家灾备等级4的相应能力。 用户自建的IDC或者来自其他云厂商的数据库可以通过DBS备份到阿里云OSS之上,而且整个备份的实现过程非常简单,只需要打通网络就可以通过DBS实现数据备份到云上,当出现灾难的时候就能够完成云上数据库快速恢复。 除了和云上数据库进行打通之外,对于数据的备份集而言,也可以通过数据湖服务直接进行查询和验证(无需恢复),这也是阿里云特有的能力之一。 阿里云数据库备份服务DBS主要有如下优势: 秒级RPO:因为数据库发生变更的时候,首先会记录日志,再刷新数据。而阿里巴巴沉淀了一整套数据库解析技术,通过这个技术能够实现秒级冷备到阿里云上的能力,并且其冷备数据和在线数据之间仅存在秒级延时。低成本:借助OSS的能力可以实现对于数据的周期性归档,并且允许数据库只备份核心关注的数据业务表,仅备份有效数据,同时进行加密和压缩。备份数据可在线读,验证有效性:基于DLA的数据湖能力,备份逻辑数据集允许用户直接进行备份集查询,查询里面的数据内容并且校验其中的数据。基于RDS的能力能够帮助用户在出现灾难时实现数据库的快速恢复。丰富的备份数据源:阿里云数据库备份服务DBS能够支持非常丰富的数据源,包括Oracle、MySQL、SQLServer、MongoDB以及Redis等。2、数据库热备以及双活架构DTS 结合DTS和RDS就能够实现云上数据库热备,可以实现国标等级5的灾备能力。无论是将业务中心建立在自建IDC还是其他云厂商上,通过DTS热备到阿里云上,当出现本地IDC出现数据库故障或者误操作的时候,用户就可以一键切换到云热备之上,实现秒级RPO和秒级RTO。 您还可以更进一步,借助DTS和RDS实现多活,除了将业务切换到阿里云上之外,还可以反向建立阿里云到本地IDC数据库的同步链路,从而建立双向同步通道,这样就能够提供异地双活能力,两端都可以进行写入和切换。业务也可以在云上和本地IDC之间进行分流,从而实现就近写入和就近服务的查询能力,同时能够支持实现容灾。 如果采用传统热备方案,将数据热备到云上之后可以支持实现秒级RPO的数据库切换,但是当切换完成之后如果想要去恢复灾备系统,则需要一定的恢复过程,但是当建立了双向同步通道之后,可以很快地切换到阿里云,同时很快地切换回来,因此能够支持企业实现在线的容灾演练。 关于阿里云数据库传输服务DTS: 阿里巴巴在2011年左右开始投入做数据库的日志解析,而DTS除了能够实现日志解析之外,还能够实现高效的数据同步,是阿里巴巴内部实现异地多活的基础设施,也是阿里巴巴的数据从生产到消费的数据流基础设施。 DTS也支持了非常丰富的数据源,包括关系型数据库、NoSQL及大数据等17种数据源,承担了阿里云上的40多万的数据传输任务。 3、基于DMS+HDM的数据库统一管理方案 除了上述的DBS和DTS两款灾备产品之外,当用户使用线下到线上的数据同步或者线下到线上数据热备之后,就会形成一个混合云数据库架构。 阿里云为此提供了一整套数据库混合云统一管理解决方案,该方案沉淀了阿里在脱敏审计、变更管控以及研发协同等多方面的能力。 在混合云上,如果数据库分布在自建的IDC、其他云厂商以及阿里云上,就可以通过阿里云的混合云数据库管理(HDM)进行统一管理,通过One Console实现统一监控、告警、性能优化和风险识别。 了解企业级云灾备解决方案——“十万先行者计划”,请点击:https://promotion.aliyun.com/ntms/act/hclouddr/index.html 相关阅读阿里云发布企业级云灾备解决方案,十万先行者计划开启普惠灾备专访阿里数据库备份专家 教你Pick最有效的备份系统 本文作者:七幕阅读原文 本文为云栖社区原创内容,未经允许不得转载。

June 10, 2019 · 1 min · jiezi

做可交互的统计图表这套图形语法不容错过

选好可视化“一图胜千言”,是最直观的数据可视化魅力。以图表来传达和沟通信息,其效率远超枯燥乏味的数据表达。 有需求就有市场。数据可视化崭露头角后,各个厂商出备的产品、解决方案,开发者自研的可视化工具、操作平台都如雨后春笋般冒了出来。 受众不同,个人的选择就会不同;需求不同,特色的选择就会不同。但选择繁多,很多开发者和企业就会头疼:有数据可视化的需求,但工具到底该如何选择? AntV-G2是阿里巴巴2018年推出的开源项目,是一套基于可视化编码的图形语法,具有高度的易用性和扩展性。无需关注繁琐的实现细节,一条语句即可构建出各种各样的可交互统计图表。它具备以下特性: 简单、易用:从数据出发,仅需几行代码就能轻松获得想要的图表展示效果完备的可视化编码:以数据驱动,提供从数据到图形的完整映射强大的扩展能力:任何图表,都可以基于图形语法灵活绘制,满足无限创意作为一个非常全面的图表库,AntV G2库有折线图、柱状图、条形图、雷达图、箱体图、面积图、饼图、热力图、仪表盘… …几乎满足了所有基本的图表类需求。 另外,G2还是一个使用WebGL/canvas技术实现的基础图表库,因此既可以在原生js环境下使用,也可以使用任意的js框架。基于G2封装的组件框架有BizCharts和Viser,所以如果使用angular、react、vue的话可以直接使用其封装的组件,和自行动手封装G2组件是一样的效果。 G2的构成一个可视化框架需要四部分: 数据处理模块,对数据进行加工的模块,包括一些数据处理方法。例如:合并、分组、排序、过滤、计算统计信息等图形映射模块,将数据映射到图形视觉通道的过程。例如:将数据映射成颜色、位置、大小等图形展示模块,决定使用何种图形来展示数据,点、线、面等图形标记辅助信息模块,用于说明视觉通道跟数据的映射关系,例如:坐标轴、图例、辅助文本等 在数据处理模块上,dataSet主要通过state状态管理多个dataview视图,实现多图联动,或者关联视图。dataView则是对应的是每一个数据源,通过connector来接入不同类型的数据,通过tranform进行数据的转换或者过滤。最后输出我们理想的数据,dataSet是与g2分离的,需要用到的时候可以加载;*  在图形映射模块上,度量 Scale,是数据空间到图形空间的转换桥梁,负责原始数据到 [0, 1] 区间数值的相互转换工作,从原始数据到 [0, 1] 区间的转换我们称之为归一化操作。我们可以通过chart.source或者chart.scale('field', defs)来实现列定义,我们可以在这对数据进行起别名,更换显示类型(time,cat类型等); *  辅助信息,就是标记数据,方便理解数据; *  图形展示chart图表是一个大画布,可以有多个view视图,geom则是数据映射的图形标识,就是指的点,线,面,通过对其操作,从而展示图形。 大体步骤如下: G2 经典新生目前AntV-G2已更新到3.4版本。通过这次升级,G2往经典的“图形语法”理论注入了新的生命,为大家带来“交互语法” — 一套简洁高效的交互式可视化解决方案。同时,G2的底层渲染进行了升级,实现 SVG 和 Canvas 自由切换。 简洁灵活的交互语法 G2将经典的图形语法理论扩展为“交互语法”,一方面开放 220+ 种交互事件,支持定制最小粒度的图表元素交互,另一方面封装了各类复杂的、常用的交互场景,使丰富灵活的图表交互仅需一行代码实现。 渲染引擎自由切换 G2的绘图引擎开始支持 SVG 和 Canvas 双引擎,以适应更多业务场景。并在拾取、动画管线、碰撞检测等方面进行了优化,G2的绘图能力变得更自由、更流畅。 两种引擎在不同场景的性能对比 256+58的试炼 通过256 plots计划和58+业务模板计划,来向用户提供更丰富的场景,也由此检验G2图表的数据表达能力。 通过256 plots计划,G2挑战了d3.js、R语言社区等经典图表绘制,检验并刺激了G2框架图形能力的更新。 58+业务模板源自真实的业务,由基础的线、柱、饼图表改造而起,进而辐射到分面、迷你图等更复杂的场景,能更好的帮助用户找到理想的可视化解决方案。 DataV数据可视化AntV-G2功能虽然强大,但对于需要开箱即用、直接适用业务的企业而言,距离可视化还缺少一个成熟的产品。幸运的是,阿里云.DataV数据可视化完美承担了这样的一个角色。DataV只需通过拖拽式的操作,使用数据连接、可视化组件库、行业设计模板库、多终端适配与发布运维于等功能,就能让非专业的人员快速地将数据价值通过视觉来传达。 DataV具有丰富的图表库,并外接有国内两大第三方图表组件库——Echarts和今日的主角:AntV-G2。在强大的图表库支持下,DataV可以制作出丰富多样的可视化页面,随心所欲自由搭配图表来做组合。 本文作者:数据智能小二阅读原文 本文为云栖社区原创内容,未经允许不得转载。

June 6, 2019 · 1 min · jiezi

何为真正的-FaaS-阿里舜天平台做了四大创新

阿里妹导读:数据中心和云计算的超高增速,AI、视频、基因测序等应用对于算力的无尽渴求和摩尔定律发展事实上已经停滞的现实,均给异构加速带来了巨大的应用潜力和商机。但 Faas 解决方案仍有较高的门槛,今天,我们一起了解 Faas 的难度在哪里?以及在阿里,我们如何做到真正的 Faas?一、 前言近几年,DC 和云计算领域风起云涌,发展地如火如荼。中外厂家纷纷发布 “DC First”、“All in Cloud”、“Cloud or Dead” 等战略,不管此前公司的主业为何,杀入 DC 和云计算领域的厂家如过江之鲫。但是,和任何 ICT 领域一样,在经过充分的搏杀和竞争之后,整个市场将基本稳定下来,由 TOP2-3的厂家把持,其他 players 加到一起分点残羹冷炙。Gartner 于4月24日发布报告,阿里云以19.6%的市场份额,雄踞整个亚太第一,AWS 和微软分居第二和第三。全球范围内,仍然维持了AWS、微软和阿里云分别为冠、亚、季军的格局。 阿里云 FPGA as a Service(以下简称FaaS)舜天平台正是 FPGA 异构加速领域的领导者和开拓者,也是 FPGA 异构加速领域良好生态的倡导者和建设者。依托阿里云百万企业付费客户以及阿里云强大的飞天操作系统,FaaS 舜天平台对内而言,已经成为阿里集团 FPGA 加速业务的基础设施;对外而言,则将大幅降低 FPGA 的开发和使用门槛,致力于为客户提供最高性价比的算力和打造健康的 FPGA 加速生态。 二、 传统的 FPGA 应用与 FaaS 的区别FPGA 由于其强大的灵活性,自诞生以来,在数以千计的垂直市场中都获得了大量的应用。但是,这种应用都谈不上“云”,也谈不上“service”。我们知道,传统 IT 基础设施是没有弹性的,因此很容易出现要么业务高峰时无法支撑乃至整个 IT 系统崩溃;要么陷入业务低谷时,大量 IT 资源闲置,造成成本高企。因此,“云”和“非云”的一个最大区别就在于是否支持资源的“弹性”伸缩:需要时按需获取,不需要时随时释放。而要做到“弹性”,那么一定要通过虚拟化来支持。如果做不到“弹性”和“虚拟化”,就称不上 FaaS,究其本质和传统上对 FPGA 的使用没有任何区别。 如果单纯从 FPGA 的设计和使用角度看,即使有门槛的存在,设计一颗 glue logic的 FPGA 或者跑一点简单算法,实现一点简单控制,难度是相当有限的。但是,不能说具备了这些能力之后,就可以对外宣称可以提供 FaaS 的能力了。 首先,使用 FPGA 实现复杂的算法的门槛是非常高的(比如用 FPGA 实现 H.265 编码);其次,高效使用 FPGA 实现复杂的算法的门槛是非常非常高的(还拿 H.265编码举例,设计得不好的话,很大容量的一颗 FPGA 也许只能支持一路 1080p/30 帧的 H.265 视频,好的设计也许就能支持4路);最后,把 FPGA 的加速能力通过“云”来输出给客户的门槛是非常非常非常高的。所以,FaaS 的核心之一是让 FPGA 的算力“x86化”,即云上购买和使用 FPGA 的算力和云上购买和使用 CPU 的算力一样简单;核心之二,是让 FPGA 的算力“服务化”,即不需要客户做二次开发和适配,通过简单的类 URL 调用即可使用。 ...

June 3, 2019 · 3 min · jiezi

flutter在2019年会有怎样的表现?

Flutter的趋势在移动端,受成本和效率的驱使,跨平台一站式开发慢慢成为一个趋势。从Hybird,RN,WEEX,Flutter,到各种小程序或快应用的大量涌现,虽然很多跨平台方案都有各自的优缺点,目前还没有完美无缺的终极方案,但这已是未来移动端开发不可逆转的一大方向。而Google推出并开源的移动应用开发框架Flutter,更是其中的明星。笔者从自身在做Flutter相关的分享中,特别强烈的感受是,有非常非常多的Native技术栈的同学在学习和使用Flutter,有非常多的前端技术栈的同学在时刻关注Flutter的hummingbird和desktop-embedding的进展。尤其自Flutter1.0 发布后,Flutter受到了业界更多的关注和期待。跨平台解决方案比较目前几个主流的跨平台解决方案:基于浏览器技术的Hybird基于桥接Native组件,如RN、WEEX基于底层统一渲染,如Flutter它们有各种的优缺点,但浏览器技术无疑是其中的历史最长、标准最完善、用户最多、生态最丰富的。RN、WEEX也可以归类为javascript生态的一个小分支。而Flutter走的是和前两者截然不同的路线,它是一个新兴的挑战者,通过底层统一渲染,得到高度一致的跨端效果;通过引入dart,得到AOT的接近原生的性能,和JIT的快速开发体验;通过上层完善的组件体系(material design & cupertino),得到高保真的UI体验。但它也并非尽善尽美。同时基于底层统一渲染的跨平台方案有很多,在移动端有实际应用的如QT、cocos2d等。对比Flutter和QT,最大的区别在语言和背后团队。语言:Flutter选择了Dart,QT是C++。Dart相比C++,对开发者来说无疑于相比骑自行车和开飞机的区别,Dart更容易编写,除此以外,Dart还拥有AOT和JIT两种模式、类型安全、快速内存分配等等特点,确实如Flutter团队所述,同时拥有一两条这些优点的语言不少,但是将所有这些优点集于一身的,只有Dart。背后团队:Flutter的背后是Google,QT的背后是TrollTech,从社区影响力和号召力而言不可同日而语。但同时也必须要认识到的是通过底层统一渲染的跨平台方案,也有它天然的劣势。它很难复用系统天然提供的组件。在摆脱对操作系统的依赖和复用操作系统的能力上,要考虑如何达到了一个最佳的平衡。Flutter的生态如果拿Flutter生态同React和Native进行比较的话基于核心UI表达层向上,这一层会更接近前端的体系,以React生态为参照物,主要的几部分路由体系一种面向以Flutter为主的应用,它的路由以Flutter为主,Native的路由部分往往以简易桥接的形态存在。一种面向混合技术栈为主的应用,它的路由以Native为主,Flutter为辅。状态管理体系 | 应用框架基本上在React生态下有的状态管理,Flutter也有,同时有一些是Flutter独有的。开源的代表有:flutter_redux, google的BLoc,scoped_model,及闲鱼的fish-redux,它在真实的复杂场景下得到了非常好的验证。UI库体系目前已有不少UI库,包含常见的组件。基于核心UI表达层向下,这一层会更接近Native的体系,以Native生态为参照物,主要的几部分核心的一些基础中间件,如网络,图片,音视频,存储,埋点,监控等。目前和Native相比还是有非常大的差距。所以也导致了目前大部分这些问题的解决方案,都趋向于桥接的形态。通过复用Native能力来短期补齐Flutter能力不足的。但它不一定是未来的最佳的方案。一些重量级的基础组件,如WebView,MapView等。目前已经能通过PlatformView的形式,得到能力拓展。但是它有使用的局限性和性能上的损失。Flutter今年几个重要的突破点Code-Push在当下国内应用生态环境,热修复或者热部署能力在很多公司和团队做技术选型中,往往是其中非常重要的一个选项。如果有Google官方推出,不管是hotfix,还是dynamic-boundle都将极大的推动Flutter在国内的发展。而基于dart语言的特性判断,在Flutter上做code-push理论上会比目前任何Native的code-push方案有更强的能力。闲鱼团队一直和Flutter团队就这方便保持紧密的联系,在之前的验证中,目前在android端是可以支持的,但还留有一些瑕疵。Humming-Bird在跨平台之外,还有一层更高级别的诉求,多应用投放,打破应用之间的孤岛壁垒,实现更多的商业价值。而要完成多应用的投放,首选的是基于浏览器的方案。Humming-Bird方案为这样的设想,提供了可能。同时Humming-Bird也将大大扩张了Flutter的边界,吸引更多的开发者和厂商的加入,同时让面向终端的全栈解决方案成为可能。Dart语言也有可能成为javascript生态的更好的补充和演进。Flutter面向未来基础架构设计决定了一个软件的发展上限,它带来了更多的想象力。使用Flutter和Dart,既是Google为摆脱和Oracle纠缠多年的“Java 侵权案”提前下的一颗棋,也是Google为下一代操作系统Fusion下的一颗棋,是即Google通过chromium项目渐进的统一浏览器领域,着眼于更多的终端,为了一个更大终端生态的大一统做准备。这让Flutter和Dart充满了更高层次的可能。如果没有这些可能,Flutter的生命无疑是会短暂的,因为它还未能建立被广泛被认可的标准,就像我们终端里走过的那么多的技术一样,都是有限的解决了当下的诉求,但随着终端的更替,操作系统的演进,慢慢变成了明日黄花。而正是这些更多的可能,是Flutter持续演进的源泉,是Flutter相比其他的跨平台方案中最吸引人的部分。本文作者:闲鱼技术-吉丰阅读原文本文为云栖社区原创内容,未经允许不得转载。

April 19, 2019 · 1 min · jiezi

我在阿里云做前端

前言今年是我毕业的第10个年头,半路出家做了前端,title一直是前端,你可以说我很专注,有时候也有些遗憾。一直以来,当别人问起你是做什么的,我说前端或者全栈,别人说:哦,做页面的啊!心里难免有些失落。前端是个资源型角色,在认知里对业务的理解深度不够,加上通常负责业务领域很广,比较难有积累和沉淀。如果你问一个毕业10年的JAVA老司机,他跟你谈的一定是大流量下的分布式架构,而前端可能还是昨天茶余饭后讨论vue和react,或者是angular谁更强。如何突破,如何提供业务更多价值,前端们一直在苦苦探寻。网上很多文章,给人启发,但每个人面对的环境,负责的业务不同,不一定都适用。结合自己过去几年在阿里云的前端经验,也做个总结。1.0版本-工具&团队今年是我来阿里云的第五个年头了,从没有想过会在一个公司呆的如此之久,更没想过我能在一个岗位上沉淀4、5年。刚入职在阿里云控制台团队,主要负责云盾控制台、drds控制台等,开发过程中发现大部分场景是「表格」、「表单」,为了避免自己不断重复开发,封装了simpleForm以及控制台cli脚手架,可以做到新开发控制台一键敲定(这个脚手架直到去年还有人问我如何用……也是经久不衰)。这个时候也萌生了做个ide,可视化搭建UI视图,不过限于精力和当时团队的方向,且当时vscode还没今天这么流行,没有尝试,比较遗憾。不过做WebIDE这个点,算是在心里种下了。后由于组织结构调整,我从控制台团队独立出来,负责当时的网站运营方向,开始比较艰难的从0-1组件团队过程。当时业务相对比较简单,主要是:阿里云官网以及官网的Nodejs、云市场业务。由于在控制台团队主要用的angularjs,感觉上手成本比较大,在建立新团队,以及我自己可以选择的时候,React成了我的首选。当时vue还没成熟,其实能选的也只有react。新的技术体系,需要有配套的工程化体系,当时Def还处在1.0时期,为了稳定以及减少开发成本,很自然我们在xef上做了插件式开发,结合自己业务特性,分装了响应的模板,以及定制了开发周期。后由于xef1.0升级2.0,导致我们工具的不稳定,且改动非常大,逐步将我们的工程化体系独立,这就有了后续的DBL(当时叫屌爆了)。我跟老板做汇报时,老板觉得这名字上不了大雅之堂,还硬是憋了个比较有内涵的名字——实在不好记,我现在都记不起来了。这个阶段,我们做了很多技术上的尝试,团队成员都非常苦逼,也非常有激情。团队基础设施建设,我们一直在优化,随着Dawn的基于中间件式的pipeline方式设计,可以说是将工程化做到一个比较高的高度,未来不管是webpack升级到多少,或者新的打包工具出现,对我们来说影响都比较小。面向未来的模式,让我们只需要修改内核,使用者无感知。新的工程化方案也积极跟阿里云其他团队沟通和交流,之前跟风驰和释然也达成一致意见作为阿里云统一构建工具推进,不过落地的不是很好。同时,新的方案也完全遵循集团的标准,跟淘宝阿大团队无缝对接。另外还有一个好处是:dawn不局限在react,你可以使用任何框架;dawn不局限在redux,你可以使用任何你喜欢的数据管理,实际上我们自己有用mota,mobx,graphql-apollo等等。Dawn连接:https://github.com/alibaba/dawn讲完工程化,其实应该讲讲组件化,这是个无法回避的问题,但这对我们来说也是个艰难的过程。15年的时候,我们用过antd(已开源),但是在上层做了一层业务封装;后来fusion开始盛行,在跟ued沟通后,考虑到集团统一,用了一段时间的fusion(已开源);最后我们还是选择了自建组件库,这是一个很无奈的举动。具体细节不表,其中一个重要原因是我们的前台业务需要「阿里云自己的设计元素」,在经过团队很长时间的建设,APS组件库已经作为团队组建库的基础,在其之上构建了业务组件,并在之上构建了业务解决方案。除了折腾传统前端领域,也尝试做了很多跨栈的事情。在我所负责的业务中,由于「端」业务的确实,我们更多的是偏「全栈」。前端同学做全栈,讲实话是不行的——绝大部分前端同学在架构、运维部署方面还是经验偏少,考虑更多的是跟展现层相关。在全栈路径上,由于我们负责的是核心交易链路,我们没有用大家熟悉的nodejs,而选择跟后端一样的语言——Java。做这个决策,其实是挺困难的,也是有故事的。原先有个系统,前端同学用Nodejs写的,但由于业务非常复杂,加上前端一直是个资源瓶颈的角色,一个人干三个人的活,所以这个同学最后搞不定,离职了。这么个系统就变成了后端想接无法接,前端「没人力」接的状况,非常尴尬。从那以后,业务系统中就决定了直接使用Java。在全栈路上,我们主要有两个策略:大前端下自己写部分业务的Java利用serverless通过代理统一配置化转大前端写Java,阿里云其实非常多的前端都已经具备了这个能力,我自己也有独立开发几个系统从0-1上线,分布式部署且支持国际化的经历。做了一段时间后发现,其实效率上还好,并没有传说中nodejs比Java要高效很多的体感.利用serverless通过代理统一配置化转,有段时间看社区有部分人提到Graphql,对此产生了兴趣,就顺便了解了下,通过代理的方式可以将后端数据转换成前端需要的格式,非常吸引人,也就一下子扎进去。我自己也同时做了Nodejs的版本给团队同学普及,同时做了Java版本的demo给后端普及。同时了解到b2b的Mbox平台跟我们想要的能力比较像,找过他们给我们分享,但由于业务系统整个搭建在他们平台有一定得风险,于是决定了自建代理平台,这也是「云查询」平台的背景。云查询主要是战锋主导并推进落地的,在集团内取得了不错的影响力,很多BU很多部门去做过分享。在业务上,通过云查询,我们实现了不用管应用的运维和部署,实现业务逻辑和接口的转换,并自动扩容。尤其是营销体系,在元策&隐天和战锋得协同下,取得了比较大的效率提升,并支持了阿里云去年的双十一。具体「云查询」文章介绍可以看我另外一篇文章。云查询经过一段比较长时间的发展,我们已经逐步将它作为基础能力下沉,在云查询的serverless之上长出了不同的「轻应用」,以支持不同的垂直业务场景。比如:可视化搭建领域「页橱」、基于权限&角色的中后台解决方案「Flex」等;还记得我之前说过5年前我想做WebIde,没有开始;2年前,看到其他云厂商有WebIDE,我们由于业务压力,业务压力没有搞成;今年我们总算是有一点启动,已经和appStudio的同学在共建,基于appStudio基础之上把我们的dawn、云查询做打通,做云端集成化、一站式的研发体验。通过以上的技术基础建设,已经为我们构建了很好的基础基础。业务布局对应着团队、组织的建设。过去几年,团队从0-1建设,到目前xx个在岗同学,形成了4个梯队,三个3业务方向&一个技术架构方向,一路走来,感觉带团管理水很深,很多时候不是说你带的人越多越好,最近看到一本书提到一个词「情感成熟」,这个非常重要。一个技术好,做业务的好手未必能管理好团队,在不同阶段需要适应不同角色的要求,最重要的是时刻保持忧患意识、保持持续学习。在团队建设时,需要重点区分manager和leader,尤其是业务团队我们更希望成为leader,去带着做业务,而不仅仅是做绩效管理。2.0,也就是过去一年,我们在业务思维指导下,owner了部分业务,并利用横向的技术打通、横向的业务思维,取到了一些成果,接下来进入2.02.0业务思维-以横向视角推进业务赋能我们通常把组织中的人分为:一字型、|字型、T字型、+字型。前端正好是—字型团队,负责的业务非常广,而前端又是个非常稀缺的岗位,招聘很困难,所以盘子越大资源瓶颈越明显。「一字型」角色团队,典型的问题就是对业务的深度理解不够,单纯从技术层面去做营销的搭建、中后台的可视化,结果都不尽如人意。这么说起来,可能你觉得没法往下看了,天花板在那里,如何突破其实并没有太多可参考的例子。我写这篇总结,正是有些这样的感悟,希望给大家做一些输入,帮助大家去思考。「一字型」虽然从业务上看我们的深度不够,但从专业技能看我们是标准的「|字型」。前端经过这10来年的发展,语言、框架、工具已经逐步趋于稳定,各种端的性能也越来越流畅,生态非常活跃,任何你碰到的困难相信社区都已经有比较成熟的方案。前端生态快速发展的10年,也验证了我们这些人有着非常强大的学习能力,7天一个框架、3天一个数据库估计都不是太大难事(略夸张,但表达的是这么个意思)。前端直接对接客户,对客户体验的敏感、对流程数据化的敏感、对业务逻辑流程的感知,都是我们生存的根,也是我们独一无二的能力,这个根我们不能丢。有句话叫:饱暖思淫欲,不太恰当,姑且一比。在前端纵深领域的深耕,让我们成为了「紧缺资源」,随着工具的完善,前端们也更希望利用技术为业务赋能。如何赋能?挡在我们面前的是「意识」。在营销中,认知、需求、品牌、品类、价格五个要素中,「认知」最为重要。比如阿里是做电商的、腾讯是做社交的、百度是做搜索的,bat在自己主营业务范畴不断布局,构建了庞大的生态,做过很多尝试,但看起来最终还是围绕本身的基因做生态投资成功率要高一些。那我们想要业务赋能,瓶颈就在于「你个切页面」也要赋能吗?好好做好体验、提效不好吗?我认为「体验、提效」这是前端最核心的能力,也是毕生都努力要实现的目标,坦白讲我们没法马上解决资源瓶颈问题,毕竟现在毕业生都在应聘算法、ai、人工智能;我们也没办法搞一轮体验提升计划;这是个很漫长的过程。但如果我们能以业务的角度出发,去发现问题进而辅助以技术手段解决,并沉淀平台,应对未来千变万化的需求,可能更为实际一些。做为团队的TL,除了在专业上给与同学「|」型的能力纵深,也更希望带着团队同学获得更多业务体感。离开业务谈技术、谈中台都是空中楼阁;离开业务谈前端,注定只能是重复造轮子,而这种低水平的重复正在发生,且可能会持续很久。在很长一段时间里,我都试图把我们「一字型」业务广度做个抽象和融合,希望把「点状」形成「线」,进而形成整体「面」解决方案。我所负责的业务中,主要有4个大方向:官网&营销—for长尾商业化流程后台-for 小二核心售卖流程—核心能力层销售、合作伙伴官网&营销:主要包含获客、激活、转换、留存几个节点,构建高效的「人」、「货」、「场」。很长一段时间里,阿里云的内容维护、营销大促都是基于集团CMS来的。传统大促会场、卡片的方式,前端挖坑后运营编辑内容,而阿里云的「商品」跟淘系有着比较大的差别,另外我们也没有招商、选品的体系,导致这种简单人肉运行的大促方式存在很多弊端,比如不高效、不复用、不能做个性化、数据流程监控力度不够精细等。此外「投放」能力的建设还不够,没有办法做到精细化的人群做精准的营销内容投放。为了解决这些问题,去年开始,由前端团队和pd一起推进完善的营销体系建设:在原有商品的基础上,构建了「营销商品」的概念。更抽象的「货」,且可视化在线配置直接拉取了实时价格和库存。通过我们1.0工具建设的dawn,打通开发流程,使得整个开发链路一致,成本更低。可抽象的货匹配上专门为货打造的UI视图,形成场景能力沉淀。构建ACE(Alibaba Cloud Experience)架构体系,打通搭建体系,通过技术降级打通各类「场」,更好的承载好营销商品的投放。通过全链路场景的曝光,点击,转化,以及最终成交的商品信息等数据的积累,生成用户画像,提供内容场景化方案(在不同场景中精确得向用户展示商品或信息)完善「人」的定位。商业化商品配置:上面提到「营销商品」时提到「基础商品」。目前阿里云基础商品主要分为:「公有云商品」和「技术输出型」。过去很长一段时间我们偏公有云的能力建设,今年年初才开始逐步融入专有云体系。在商业化系统中,我们的小二需要配置售卖规则、价格,需要定义商品模型;同时复杂的规格之间的约束,异常复杂。如何提高商业化的输入和输出的强体验,我们还有很长的路要走。结合今年的专有云项目,从模板的方式出发,将一类产品做个聚合,简化商品模型配置的步骤,大大提高了配置效率,提高体验。销售&合作伙伴:15年刚开始组建团队(这里指的都是前端团队,不是业务团队),15年-18.3月大部门的核心kpi是营收、是首购用户数,主打的是中长尾客户,获得了非常高速的市场增长。后来团队cover范围不断扩大,也负责销售&合作伙伴体系,围绕着「市场营销」、「商机培育」、「商机转化」、「合同履约」构建了我们自己的销售crm系统。toC的业务通常比较好理解,毕竟我们也是c的一员。这段toB的经历,结合业务一号位的培训班,让了解到销售系统的核心,除了工具,最想要的是解决方案,是产品能力的丰富。大概介绍了各个方向的业务,回到我们讨论的主题来——借助横向优势,整合资源&架构提供业务赋能。为了分析他们之间的共性,我们经过很多次的讨论,终于汇聚得到我们的业务流程大图(对外脱敏后的示意图):从这个流程大图中,各个分支最后都需要依赖「售卖能力」,这个售卖能力表现在营销中是「弹窗buy(减少跳出,直接购买)」、购物车(多产品交叉购买、数据算法推荐)、套餐(多产品打包优惠售卖)、提货券(下单和生产分离的售卖能力);表现在销售链路中是「产品配置清单」、「采购单」、「CBM提供给大客户的CTO价格计算器」表现在商品商业化链路中是「模板化」配置清单能力在一大团子中找到业务的共性「售卖能力」,在经历一段时间比较耗资源、耗时的烟囱式开发方式后,抽象出了售卖的核心支持层——紫金阙。这一层,我们定位为业务中台,偏前端层面,也是大前端的领域范畴。唯一需要指出的是,我们用的是Java,没有用nodejs,无其他差别。最后架构如下(脱敏,细节忽略):新的架构模式下,我们减少了大量的前后端沟通,比如「分销采购市场」以传统开发方式需要1-2个月,我们2周就搞定了。新的架构模式,在可预见的未来,可以很好的支持各种营销新玩法,也可以支持销售和合作伙伴的『解决方案』。我想说的是,如果没有我们全量业务的横向视角,我们的抽象方案不会这么通用,这是前端团队的优势。如果没有大前端稳定的技术生态,我们也没机会去做业务赋能。这才是前端的未来,利用横向优势整合,结合某个领域做深做透,形成垂直深度,为业务提供价值,也让我们的技术方案「有的放矢」。前端经常是围绕一个点做需求,得到工具,但无法提供解决方案,因为没有业务属性;唯有结合业务特性,做好沉淀,工具变成平台才能释放更大价值。3.0探索以技术能力为业务提供增值「云计算」核心是解决企业成本的问题,用低成本获得超强的计算、存储能力,获得高并发下弹性扩容的能力。云计算提出了很多概念:IAAS、PAAS、SAAS。。。相对前端角色来讲,体感并不是很强。但是BAAS的出现,让前端眼前一亮。试下想,原先我们需要大量后台开发的应用,逐步都沉淀成领域能力,提供baas服务给前端调用,前端再也不用考虑部署、运维,只关心业务代码,想想也是心动。目前市面上提供类似服务的公司很多,有专门做后台数据存储的如Leancloud、有做数据分析的、有做消息推送的等。所以,Baas会是前端的春天吗?这个拭目以待。扯了理想,我们也说说现状。目前阿里云大概是Buy In Aliyun,我们售卖的是IAAS层的资源,用户核心的业务流程还是基于自己的研发体系。在前端这个纵深领域内,基于云打造「云端一站式研发流程」,将企业前端变成:Work In Aliyun or Dev In Aliyun。通过对企业前端生命周期的分解,通过WebIDE来承载整个流程:1. 将创建关联阿里云的code2.阿里云前端构建工具dawn作为基础构建能力,可定制化团队构建的中间件(webpack、lint、server、mock等)、构建stage(init、dev、test、publish);基于工程化化能力提供统一的规范,提供各种不同应用框架的初始化模板。3.代码点击发布后,自动编译,并发布到cdn。在此基础流程之上,我们提供serverless相关能力,通过调用BaaS领域服务能力,以及FaaS网关触发能力,实际上我们可以完全一站式,且是前端主导的应用开发。还记得我前面提到我们的serverless应用「云查询」,这一层我们逐步进行能力下沉,变成serverless基础能力。各公司几乎都有营销搭建体系,过去搭建的玩法不够多样,主要依托cms能力自行开发,随着现在各种「端」能力的延伸、多样性化,营销搭建也变得越来越复杂。而我们基于「云查询」之上沉淀出的「页橱」搭建体系,完全可以借助「云端一站式研发流程」提供很好的SAAS化服务。这是我们的优势,「云端前端解决方案」也只有我们适合做这个,这里只列举了其中一个场景,类似的机会还有很多。总体感觉,一云多端借助serverless前端的春天已然来临。抓住我们核心的竞争力,并同时发现业务中的问题,跨端推进解决,这是最好的出路。你问我做什么的,我…… 我就是阿里云CPO(首席页面仔啊)ps:阿里云智能业务中台&阿里通信招P6-P8前端,欢迎来撩。base可北京可杭州,杭州工位在美丽的西溪园区哦。旁边挨着的都是UED妹子&测试妹子。xiaoming.dxm@alibaba-inc.com本文作者:城池cc阅读原文本文为云栖社区原创内容,未经允许不得转载。

March 28, 2019 · 1 min · jiezi

边缘计算时代来了,你准备好了吗?

摘要: 边缘计算能否加速物联网时代到来?边缘计算已成为物联网(IoT)的重要趋势,高德纳咨询公司将边缘计算确定为2019年的最佳技术趋势之一。提供物联网解决方案的公司看到了在更接近产生数据的地方处理数据带来的价值。最近Forrester调查发现,在未来的3年时间里,53%的受访者希望在边缘分析复杂数据集,这也证实了这一趋势。因此一些人甚至做出了“边缘计算将吃掉云计算”的猜测。边缘计算正在引起多方关注,因为它确实可以解决工业物联网案例的一些关键问题。比如说边缘计算允许在更靠近传感器的地方分析和过滤数据,只有少数数据被发送到云端,这一举措可以大幅降低网络带宽成本和云数据存储成本。另外,许多工业物联网使用案例中需要亚秒级(即1GHz/1.2秒)响应时间才能实现安全且精确的操作。例如,如果人类太靠近工业设备,则设备需要立即停止工作。在这种情况下,设备停止工作的决定不能等待物联网云平台的信号反馈。如果将信号处理放到边缘,那么整个反映过程可能会实现亚秒级响应时间。另一种用例是自动驾驶汽车,它也需要亚秒级响应时间。工业物联网案例中的安全和隐私要求也推动了对边缘计算的需求。工厂和关键基础设施正在使用边缘设备来保护关键工业流程和设备免受其他网络连接的影响。同样,这些机器生成的数据通常也会被视为机密,通过边缘计将敏感信息保存在工厂内部。最后,边缘计算还允许自主操作。如果存在网络连接问题,许多工业操作就出现失控的情况。一旦应用边缘计算,无论网络可用性如何,都可以保障设备和工厂继续运行。“抢滩登陆”边缘计算边缘计算引起了技术供应商的关注,一些小型初创公司正在创建专门的边缘计算堆栈。物联网平台供应商拥有连接到物联网硬件的边缘解决方案,甚至开源基金会也看到了边缘计算的潜在巨大机会。不同供应商和开源社区之间的较量仍在动态发展中。一些供应商正在寻求完整的云解决方案,有些供应商已经相互建立起了合作伙伴关系,另一些则与开源社区合作。该领域暂时没有明确的领跑者,但似乎有些人已经取得了比其他人更多的成功。物联网云提供商物联网云提供商边缘计算解决方案致力于为客户提供集成的整体解决方案,包括从边缘平台到云平台整体的设备。它们使客户更容易构建,部署和管理与其云平台连接的物联网设备。对于希望快速推出新连接产品的客户来说,这是一个引人注目的举措。但是,这种集成解决方案的风险在于它会被长期供应商绑定。亚马逊和微软是物联网云提供商的重量级玩家,两者都有与其各自的物联网云平台连接的边缘计算解决方案。Amazon Web Services提供AWS IoT Greengrass,允许连接的设备运行AWS Lambda功能,AWS服务可以运行机器学习,数据同步以及与AWS IoT Core的连接。同样,Microsoft IoT Edge允许连接的设备运行MS Azure服务,微软已经使IoT Edge成为GitHub上的一个开源项目。这似乎可以更容易地将IoT边缘设备移植到其他硬件平台,但它似乎又与Azure IoT Hub云平台紧密相关。谷歌已经发布了Cloud IoT Edge,它似乎专注于提供边缘的AI功能,但Cloud IoT Edge仍处于alpha状态。谷歌还宣布与著名的边缘计算供应商Foghorn建立合作伙伴关系。物联网平台许多物联网平台供应商也在创建自己边缘计算产品。Litmus Automation,Clearblade,Bosch IoT Suite,Software AG Cumulocity等公司提供与其物联网平台相连的边缘计算解决方案。这些公司的重点是能够实现在边缘硬件上运行数据分析和机器学习模型。其中一些供应商还与物联网硬件供应商建立了合作伙伴关系。例如,Software AG与戴尔和Eurotech合作,在戴尔和Eurotech硬件上提供其边缘软件解决方案。针对该优势的集成硬件和软件解决方案将使这些公司更容易向客户推广联合解决方案。边缘计算供应商有许多风险投资支持的初创公司专注于提供边缘计算解决方案。Foghorn和Swim等公司专注于提供机器学习和分析,Zededa和Edgeworx等其他公司正在将边缘设备引入虚拟化技术和容器技术。所有这些公司都在与主要的物联网平台和物联网云提供商建立合作伙伴关系,将他们的边缘计算解决方案连接到不同的物联网平台。物联网硬件供应商物联网网关供应商正在投资在其硬件上运行的软件堆栈。这些软件堆栈正变得越来越复杂,以满足边缘计算用例的需求。有趣的是,许多硬件供应商正在构建基于开源项目的软件解决方案。戴尔和Rigado拥有运行Ubuntu Core的物联网网关,允许远程管理和部署在其网关设备上运行的软件,戴尔还是边缘计算EdgeX开源项目的领导者。Eurotech提供基于Eclipse Kura的Everywhere Software Framework,用于构建边缘计算应用程序。台湾大型网关制造商ADLINK开发了Vortex Edge和Vortex DDS,以便更轻松地在其网关上部署软件,其中Vortex DDS是基于Eclipse Cyclone DDS的项目。开源社区开源基金会也正在积极参与边缘计算这场革命。由于开源基金会的中立性,所以它可以为公司和个人提供更好的交流平台,促进多发协作,一起研究创新边缘计算技术。对于担心被供应商控制的公司,特别是AWS和Microsoft这种纯商业行为,新兴的边缘计算开源社区提供了一个有趣的替代方案。在大多数情况下,物联网云提供商,物联网平台供应商和Edge初创公司都没有参与构建边缘技术的协作开源社区。仅仅有很少数一部分人创建了自己的开源项目,大多数人还是继续专注于提供特定于供应商的商业解决方案。商业解决方案通常是基于开源技术构建的,但公司并未积极参与。然而,这些供应商的这些行为并没有削弱开源基金会启动边缘计算协作开源项目的势头。Linux基金会最近宣布组建LF Edge社区。LF Edge包括5个不同的开源项目,包括EdgeX和Zededa的虚拟化项目Project EVE。社区已经有60家成员公司,其中包括Arm、AT&T、戴尔、爱立信、IBM、英特尔、三星等,他们同意就构建边缘计算的通用框架进行合作。Eclipse Foundation是物联网领域最成熟的开源社区之一。Eclipse IoT创建于6年前,拥有30多个开源项目,其中也包括许多用于边缘计算的项目。Eclipse Kura是Eclipse的边缘计算项目,其中也包含了Eclipse ioFog和Eclipse fogO5,它们创造了新的边缘计算技术。Eclipse还承载了边缘计算所需的流行行业标准的实现,例如MQTT,OPC-UA,DDS,CoAP和LWM2M。OpenStack Foundation也逐渐扩展到了边缘计算领域。2018年10月,StarlingX项目是基于Wind River的代码贡献启动,它由不同开源项目集成而成的项目,其中集成了包括CentOS,OvS-DPDK,Ceph,Kubernetes和OpenStack等,目的是在边缘设备上运行云服务。总结边缘计算将成为任何物联网解决方案中必不可少的组成部分。客户受益于边缘计算解决方案的创新和多样性。在单一供应商提供完整优势与云基础架构的易用性与将解决方案集成在一起的成本以及长期避免供应商锁定之间存在权衡。随着时间的推移,客户通常需要针对分布式技术(如边缘计算)的异构计算解决方案。如果历史重演,那么这一次业界将通过定义边缘计算与云通信的通用标准和协议来解决这个问题。与Web技术一样,这些标准和协议可能由不依赖于任何供应商的开源和标准社区实施。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。

March 28, 2019 · 1 min · jiezi

阿里开源分布式事务解决方案 Fescar 全解析

广为人知的阿里分布式事务解决方案:GTS(Global Transaction Service),已正式推出开源版本,取名为“Fescar”,希望帮助业界解决微服务架构下的分布式事务问题,今天我们一起来深入了解。FESCAR on GitHubhttps://github.com/alibaba/fe…微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,系统微服务化后,一个看似简单的功能,内部可能需要调用多个服务并操作多个数据库实现,服务调用的分布式事务问题变的非常突出。分布式事务已经成为微服务落地最大的阻碍,也是最具挑战性的一个技术难题。 1. 什么是微服务化带来的分布式事务问题?首先,设想一个传统的单体应用(Monolithic App),通过 3 个 Module,在同一个数据源上更新数据来完成一项业务。很自然的,整个业务过程的数据一致性由本地事务来保证。随着业务需求和架构的变化,单体应用被拆分为微服务:原来的 3 个 Module 被拆分为 3 个独立的服务,分别使用独立的数据源(Pattern: Database per service)。业务过程将由 3 个服务的调用来完成。此时,每一个服务内部的数据一致性仍有本地事务来保证。而整个业务层面的全局数据一致性要如何保障呢?这就是微服务架构下面临的,典型的分布式事务需求:我们需要一个分布式事务的解决方案保障业务全局的数据一致性。2. Fescar 的发展历程阿里是国内最早一批进行应用分布式(微服务化)改造的企业,所以很早就遇到微服务架构下的分布式事务问题。2014 年,阿里中间件团队发布 TXC(Taobao Transaction Constructor),为集团内应用提供分布式事务服务。2016 年,TXC 经过产品化改造,以 GTS(Global Transaction Service)的身份登陆阿里云,成为当时业界唯一一款云上分布式事务产品,在阿云里的公有云、专有云解决方案中,开始服务于众多外部客户。2019 年起,基于 TXC 和 GTS 的技术积累,阿里中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback, FESCAR),和社区一起建设这个分布式事务解决方案。TXC/GTS/Fescar 一脉相承,为解决微服务架构下的分布式事务问题交出了一份与众不同的答卷。2.1 设计初衷高速增长的互联网时代,快速试错的能力对业务来说是至关重要的:一方面,不应该因为技术架构上的微服务化和分布式事务支持的引入,给业务层面带来额外的研发负担。另一方面,引入分布式事务支持的业务应该基本保持在同一量级上的性能表现,不能因为事务机制显著拖慢业务。基于这两点,我们设计之初的最重要的考量就在于:对业务无侵入:这里的“侵入”是指,因为分布式事务这个技术问题的制约,要求应用在业务层面进行设计和改造。这种设计和改造往往会给应用带来很高的研发和维护成本。我们希望把分布式事务问题在 中间件 这个层次解决掉,不要求应用在业务层面做额外的工作。高性能:引入分布式事务的保障,必然会有额外的开销,引起性能的下降。我们希望把分布式事务引入的性能损耗降到非常低的水平,让应用不因为分布式事务的引入导致业务的可用性受影响。2.2 既有的解决方案为什么不满足?既有的分布式事务解决方案按照对业务侵入性分为两类,即:对业务无侵入的和对业务有侵入的。业务无侵入的方案既有的主流分布式事务解决方案中,对业务无侵入的只有基于 XA 的方案,但应用 XA 方案存在 3 个方面的问题:要求数据库提供对 XA 的支持。如果遇到不支持 XA(或支持得不好,比如 MySQL 5.7 以前的版本)的数据库,则不能使用。受协议本身的约束,事务资源的锁定周期长。长周期的资源锁定从业务层面来看,往往是不必要的,而因为事务资源的管理器是数据库本身,应用层无法插手。这样形成的局面就是,基于 XA 的应用往往性能会比较差,而且很难优化。已经落地的基于 XA 的分布式解决方案,都依托于重量级的应用服务器(Tuxedo/WebLogic/WebSphere 等),这是不适用于微服务架构的。侵入业务的方案实际上,最初分布式事务只有 XA 这个唯一方案。XA 是完备的,但在实践过程中,由于种种原因(包含但不限于上面提到的 3 点)往往不得不放弃,转而从业务层面着手来解决分布式事务问题。比如:基于可靠消息的最终一致性方案TCCSaga都属于这一类。这些方案的具体机制在这里不做展开,网上这方面的论述文章非常多。总之,这些方案都要求在应用的业务层面把分布式事务技术约束考虑到设计中,通常每一个服务都需要设计实现正向和反向的幂等接口。这样的设计约束,往往会导致很高的研发和维护成本。2.3 理想的方案应该是什么样子?不可否认,侵入业务的分布式事务方案都经过大量实践验证,能有效解决问题,在各种行业的业务应用系统中起着重要作用。但回到原点来思考,这些方案的采用实际上都是迫于无奈。设想,如果基于 XA 的方案能够不那么重,并且能保证业务的性能需求,相信不会有人愿意把分布式事务问题拿到业务层面来解决。一个理想的分布式事务解决方案应该:像使用本地事务一样简单,业务逻辑只关注业务层面的需求,不需要考虑事务机制上的约束。3. 原理和设计我们要设计一个对业务无侵入的方案,所以从业务无侵入的 XA 方案来思考:是否可以在 XA 的基础上演进,解决掉 XA 方案面临的问题呢?3.1 如何定义一个分布式事务?首先,很自然的,我们可以把一个分布式事务理解成一个包含了若干分支事务的全局事务。全局事务的职责是协调其下管辖的 分支事务 达成一致,要么一起成功提交,要么一起失败回滚。此外,通常分支事务本身就是一个满足 ACID 的本地事务。这是我们对分布式事务结构的基本认识,与 XA 是一致的。其次,与 XA 的模型类似,我们定义 3 个组件来协议分布式事务的处理过程。Transaction Coordinator (TC):事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚。Transaction Manager (TM):控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议。Resource Manager (RM):控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚。一个典型的分布式事务过程:TM 向 TC 申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的 XID。XID 在微服务调用链路的上下文中传播。RM 向 TC 注册分支事务,将其纳入 XID 对应全局事务的管辖。TM 向 TC 发起针对 XID 的全局提交或回滚决议。TC 调度 XID 下管辖的全部分支事务完成提交或回滚请求。至此,Fescar 的协议机制总体上看与 XA 是一致的。3.2 与 XA 的差别在什么地方?架构层次XA 方案的 RM 实际上是在数据库层,RM 本质上就是数据库自身(通过提供支持 XA 的驱动程序来供应用使用)。而 Fescar 的 RM 是以二方包的形式作为中间件层部署在应用程序这一侧的,不依赖与数据库本身对协议的支持,当然也不需要数据库支持 XA 协议。这点对于微服务化的架构来说是非常重要的:应用层不需要为本地事务和分布式事务两类不同场景来适配两套不同的数据库驱动。这个设计,剥离了分布式事务方案对数据库在 协议支持 上的要求。两阶段提交先来看一下 XA 的 2PC 过程。无论 Phase2 的决议是 commit 还是 rollback,事务性资源的锁都要保持到 Phase2 完成才释放。设想一个正常运行的业务,大概率是 90% 以上的事务最终应该是成功提交的,我们是否可以在 Phase1 就将本地事务提交呢?这样 90% 以上的情况下,可以省去 Phase2 持锁的时间,整体提高效率。这个设计,在绝大多数场景减少了事务持锁时间,从而提高了事务的并发度。当然,你肯定会问:Phase1 即提交的情况下,Phase2 如何回滚呢?3.3 分支事务如何提交和回滚?首先,应用需要使用 Fescar 的 JDBC 数据源代理,也就是 Fescar 的 RM。Phase1:Fescar 的 JDBC 数据源代理通过对业务 SQL 的解析,把业务数据在更新前后的数据镜像组织成回滚日志,利用本地事务 的 ACID 特性,将业务数据的更新和回滚日志的写入在同一个 本地事务中提交。这样,可以保证:任何提交的业务数据的更新一定有相应的回滚日志存在。基于这样的机制,分支的本地事务便可以在全局事务的 Phase1 提交,马上释放本地事务锁定的资源。Phase2:如果决议是全局提交,此时分支事务此时已经完成提交,不需要同步协调处理(只需要异步清理回滚日志),Phase2 可以非常快速地完成。如果决议是全局回滚,RM 收到协调器发来的回滚请求,通过 XID 和 Branch ID 找到相应的回滚日志记录,通过回滚记录生成反向的更新 SQL 并执行,以完成分支的回滚。3.4 事务传播机制XID 是一个全局事务的唯一标识,事务传播机制要做的就是把 XID 在服务调用链路中传递下去,并绑定到服务的事务上下文中,这样,服务链路中的数据库更新操作,就都会向该 XID 代表的全局事务注册分支,纳入同一个全局事务的管辖。基于这个机制,Fescar 是可以支持任何微服务 RPC 框架的。只要在特定框架中找到可以透明传播 XID 的机制即可,比如,Dubbo 的 Filter + RpcContext。对应到 Java EE 规范和 Spring 定义的事务传播属性,Fescar 的支持如下:PROPAGATION_REQUIRED:默认支持PROPAGATION_SUPPORTS:默认支持PROPAGATION_MANDATORY:应用通过 API 来实现PROPAGATION_REQUIRES_NEW:应用通过 API 来实现PROPAGATION_NOT_SUPPORTED:应用通过 API 来实现PROPAGATION_NEVER:应用通过 API 来实现PROPAGATION_REQUIRED_NESTED:不支持3.5 隔离性全局事务的隔离性是建立在分支事务的本地隔离级别基础之上的。在数据库本地隔离级别读已提交或以上的前提下,Fescar 设计了由事务协调器维护的 全局写排他锁,来保证事务间的写隔离,将全局事务默认定义在读未提交的隔离级别上。我们对隔离级别的共识是:绝大部分应用在 读已提交 的隔离级别下工作是没有问题的。而实际上,这当中又有绝大多数的应用场景,实际上工作在读未提交的隔离级别下同样没有问题。在极端场景下,应用如果需要达到全局的 读已提交,Fescar 也提供了相应的机制来达到目的。默认,Fescar 是工作在 读无提交 的隔离级别下,保证绝大多数场景的高效性。事务的 ACID 属性在 Fescar 中的体现是一个比较复杂的话题,我们会有专门的文章来深入分析,这里不做进一步展开。4. 适用场景分析前文所述的 Fescar 的核心原理中有一个重要前提:分支事务中涉及的资源,必须是支持ACID 事务的 关系型数据库。分支的提交和回滚机制,都依赖于本地事务的保障。所以,如果应用使用的数据库是不支持事务的,或根本不是关系型数据库,就不适用。另外,目前 Fescar 的实现还存在一些局限,比如:事务隔离级别最高支持到读已提交的水平,SQL 的解析还不能涵盖全部的语法等。为了覆盖 Fescar 原生机制暂时不能支持应用场景,我们定义了另外一种工作模式。上面介绍的 Fescar 原生工作模式称为 AT(Automatic Transaction)模式,这种模式是对业务无侵入的。与之相应的另外一种工作模式称为 MT(Manual Transaction)模式,这种模式下,分支事务需要应用自己来定义业务本身及提交和回滚的逻辑。4.1 分支的基本行为模式作为全局事务一部分的分支事务,除本身的业务逻辑外,都包含 4 个与协调器交互的行为:分支注册:在分支事务的数据操作进行之前,需要向协调器注册,把即将进行的分支事务数据操作,纳入一个已经开启的全局事务的管理中去,在分支注册成功后,才可以进行数据操作。状态上报:在分支事务的数据操作完成后,需要向事务协调器上报其执行结果。分支提交:响应协调器发出的分支事务提交的请求,完成分支提交。分支回滚:响应协调器发出的分支事务回滚的请求,完成分支回滚。4.2 AT 模式分支的行为模式业务逻辑不需要关注事务机制,分支与全局事务的交互过程自动进行。4.3 MT 模式分支的行为模式业务逻辑需要被分解为 Prepare/Commit/Rollback 3 部分,形成一个 MT 分支,加入全局事务。MT 模式一方面是 AT 模式的补充。另外,更重要的价值在于,通过 MT 模式可以把众多非事务性资源纳入全局事务的管理中。4.4 混合模式因为 AT 和 MT 模式的分支从根本上行为模式是一致的,所以可以完全兼容,即,一个全局事务中,可以同时存在 AT 和 MT 的分支。这样就可以达到全面覆盖业务场景的目的:AT 模式可以支持的,使用 AT 模式;AT 模式暂时支持不了的,用 MT 模式来替代。另外,自然的,MT 模式管理的非事务性资源也可以和支持事务的关系型数据库资源一起,纳入同一个分布式事务的管理中。4.5 应用场景的远景回到我们设计的初衷:一个理想的分布式事务解决方案是不应该侵入业务的。MT 模式是在 AT 模式暂时不能完全覆盖所有场景的情况下,一个比较自然的补充方案。我们希望通过 AT 模式的不断演进增强,逐步扩大所支持的场景,MT 模式逐步收敛。未来,我们会纳入对 XA 的原生支持,用 XA 这种无侵入的方式来覆盖 AT 模式无法触达的场景。5. 扩展点5.1 微服务框架的支持事务上下文在微服务间的传播需要根据微服务框架本身的机制,订制最优的,对应用层透明的解决方案。有兴趣在这方面共建的开发者可以参考内置的对 Dubbo 的支持方案,来实现对其他微服务框架的支持。5.2 所支持的数据库类型因为 AT 涉及 SQL 的解析,所以在不同类型的数据库上工作,会有一些特定的适配。有兴趣在这方面共建的开发者可以参考内置的对 MySQL 的支持方案,来实现对其他数据库的支持。5.3 配置和服务注册发现支持接入不同的配置和服务注册发现解决方案。比如:Nacos、Eureka、ZooKeeper 等。5.4 MT 模式的场景拓展MT 模式的一个重要作用就是,可以把非关系型数据库的资源,通过 MT 模式分支的包装,纳入到全局事务的管辖中来。比如,Redis、HBase、RocketMQ 的事务消息等。有兴趣在这方面共建的开发者可以在这里贡献一系列相关生态的适配方案。5.5 事务协调器的分布式高可用方案针对不同场景,支持不同的方式作为事务协调器 Server 端的高可用方案。比如,针对事务状态的持久化,可以是基于文件的实现方案,也可以是基于数据库的实现方案;集群间的状态同步,可以是基于 RPC 通信的方案,也可以是基于高可用 KV 存储的方案。6. Roadmap蓝图绿色部分是已经开源发布出来的,黄色 部分是将在后续版本中由阿里发布出来的,蓝色部分是我们和社区共建生态部分:对不同数据库的支持,开发者可以参考 MySQL 的实现。对不同微服务框架的支持,开发者可以参考 Dubbo 的实现。对 MQ、NoSQL 的支持,开发者可以参考 TCC 的实现。配置和服务注册发现:开发者通过少量的工作可以接入任何可以提供这类服务的框架。当然,非 蓝色 的部分也非常欢迎社区参与进来,贡献更优的解决方案。另外,XA 作为分布式事务的标准,是一个完备的分布式事务解决方案不可或缺的,远景的规划中,我们一定需要把 XA 的支持加入进来。初步的版本规划v0.1.0:微服务框架支持: Dubbo数据库支持: MySQL基于 Spring AOP 的 Annotation事务协调器: 单机版本v0.5.x:微服务框架支持: Spring CloudMT 模式支持 TCC 模式事务的适配动态配置和服务发现事务协调器: 高可用集群版本v0.8.x:Metrics控制台: 监控/部署/升级/扩缩容v1.0.0:General Availability: 生产环境适用v1.5.x:数据库支持: Oracle/PostgreSQL/OceanBase不依赖 Spring AOP 的 Annotation热点数据的优化处理机制RocketMQ 事务消息纳入全局事务管理NoSQL 纳入全局事务管理的适配机制支持 HBase支持 Redisv2.0.0:支持 XA当然,项目迭代演进的过程,我们最重视的是社区的声音,路线图会和社区充分交流及时进行调整。相关链接:FESCAR on GitHub:https://github.com/alibaba/fe… GTS on Aliyun:https://help.aliyun.com/produ…本文作者:amber涂南阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

January 29, 2019 · 2 min · jiezi

机器学习数据集哪里找:最佳数据集来源盘点

摘要:很难找到一个特定的数据集来解决对应的机器学习问题,这是非常痛苦的。下面的网址列表不仅包含用于实验的大型数据集,还包含描述、使用示例等,在某些情况下还包含用于解决与该数据集相关的机器学习问题的算法代码。1 -Kaggle数据集网址:http://www.kaggle.com/datasets 这是我最喜欢的数据集网站之一。每个数据集都有对应的一个小型社区,你可以在其中讨论数据、查找公共代码或在内核中创建自己的项目。该网站包含大量形状、大小、格式各异的真实数据集。你还可以看到与每个数据集相关的“内核”,其中许多不同的数据科学家提供了笔记来分析数据集。有时在某些特定的数据集中,你可以从笔记中找到相应的算法,解决预测问题。2 -亚马逊数据集网址:https://registry.opendata.aws 该数据源包含多个不同领域的数据集,如:公共交通、生态资源、卫星图像等。它也有一个搜索框来帮助你找到你正在寻找的数据集,另外它还有数据集描述和使用示例,这是非常简单、实用的!3- UCI机器学习库:网址:https://archive.ics.uci.edu/ml/datasets.html 这是加州大学信息与计算机科学学院的一个数据库,包含了100多个数据集。它根据机器学习问题的类型对数据集进行分类。你可以找到单变量、多变量、分类、回归或者是推荐系统的数据集。UCI的某些数据集已经更新完毕并准备使用。4-谷歌的数据集搜索引擎:网址:https://toolbox.google.com/datasetsearch 在2018年末,谷歌做了他们最擅长的事情,推出了另一项伟大的服务。它是一个可以按名称搜索数据集的工具箱。谷歌的目标是统一成千上万个不同的数据集存储库,使这些数据能够被发现。5 -微软数据集:网址:https://msropendata.com 2018年7月,微软与外部研究社区共同宣布推出“微软研究开放数据”。它在公共云中包含一个数据存储库,用于促进全球研究社区之间的协作。另外它还提供了一组在已发表的研究中使用的、经过整理的数据集。6-Awesome公共数据集:网址:https://github.com/awesomedata/awesome-public-datasets 这是一个按照主题分类的,由社区公开维护的一系列数据集清单,比如生物学、经济学、教育学等。这里列出的大多数数据集都是免费的,但是在使用任何数据集之前,你应该检查相应的许可要求。7 -政府数据集:政府的相关数据集也很容易找到。许多国家为了提高知名度,向公众分享了各种数据集。例如:欧盟开放数据门户:欧洲政府数据集。新西兰政府数据集。印度政府数据集。8-计算机视觉数据集:网址:https://www.visualdata.io 如果你从事图像处理、计算机视觉或者是深度学习,那么这应该是你的实验获取数据的重要来源之一。该数据集包含一些可以用来构建计算机视觉(CV)模型的大型数据集。你可以通过特定的CV主题查找特定的数据集,如语义分割、图像标题、图像生成,甚至可以通过解决方案(自动驾驶汽车数据集)查找特定的数据集。综上所述,从我所观察到的情况来看,越来越多的用于研究机器学习的各种数据集变得更容易获取,维护这些新数据集的社区,也将不断地发展,使计算机科学社区能够继续快速创新,为生活带来更多创造性的解决方案。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。

January 25, 2019 · 1 min · jiezi

MaxCompute studio与权限那些事儿

背景知识MaxCompute拥有一套强大的安全体系,来保护项目空间里的数据安全。用户在使用MaxCompute时,应理解权限的一些基本概念:权限可分解为三要素,即主体(用户账号或角色),客体(表/资源/函数等),以及操作(与特定客体类型相关),详细参考 https://help.aliyun.com/document_detail/27935.html。授权有两种方式:ACL(基于对象,grant语句)和Policy(基于策略,policy file)。跨项目授权使用package:https://help.aliyun.com/document_detail/34602.html。可通过列标签实现表中列不同的访问控制:https://help.aliyun.com/document_detail/34604.html。为了方便用户更好的理解与使用MaxCompute权限,studio实现了以下功能:权限查看用户在project下有哪些权限,可通过show grants语句获得。studio编辑器已集成权限相关的语句(https://help.aliyun.com/document_detail/27936.html)) 通过快捷键(Windows: Ctrl + J , MAC: Command + J )唤出live template,然后搜索即可:另外,studio对此也提供了图形化的方式显示用户的权限。如下图,点击工具栏上的show privileges按钮,弹出Show user privileges对话框,点击search button, 下方就会显示用户在该project下的权限:json标签页是所有权限的汇总,点击table标签页,则显示用户在table上的权限。鼠标悬停在table标签页上,则提示table的权限说明:权限异常诊断当因缺少权限导致任务报鉴权失败异常时,可通过studio的权限异常诊断,快速寻找解决方案。如下图,点击工具栏上的权限异常诊断按钮,弹出权限异常诊断对话框,在上方文本框中输入完整的鉴权异常信息,然后点击ok按钮,则下方文本框会显示可能的解决方案:权限语句编写MaxCompute提供了一系列的权限语句,studio SQL编辑器已集成这些语句,用户可以利用studio来执行这些语句以完成相应的权限操作。具体的,通过快捷键(Windows: Ctrl + J , MAC: Command + J )唤出live template,然后搜索:另外,在编写授权语句过程中,也支持相应的代码智能提示:授权语句生成除了手写授权语句,studio也支持图形化给用户授权,点击工具栏上的show privileges按钮,弹出Show user privileges对话框,点击Grant privilege标签页,选择好授权对象,下方的SQL窗格就会同步显示其对应的授权语句,然后点击execute grant command,等待后台完成即可。studio中的权限添加MaxCompute project时,studio会尝试列举project下的所有客体到本机,即用户必须有project的list权限。显示表详情时,用户必须具备table的describe权限;显示自定义函数,则必须具备function的read权限。在编辑器中编写SQL,用到的table或function,则也必须有上述读权限。在编辑器中运行某条SQL,则必须具备SQL中表的select权限,同时还必须有project的CreateInstance权限以能提交SQL任务。开发好了UDF,要想发布,则必须有function的write权限。权限好文官方文档 https://help.aliyun.com/document_detail/27926.htmlMaxCompute安全管理指南 https://yq.aliyun.com/articles/686800本文作者:昊一阅读原文本文为云栖社区原创内容,未经允许不得转载。

January 24, 2019 · 1 min · jiezi

2018年阿里巴巴重要开源项目汇总(持续更新中)

摘要: 云栖社区特在2018年年末,将阿里巴巴的一些重要的开源项目进行整理,希望对大家有所帮助。开源展示了人类共同协作,成果分享的魅力,每一次技术发展都是站在巨人的肩膀上,技术诸多创新和发展往往就是基于开源发展起来的,没有任何一家网络公司可以不使用开源技术,仅靠自身技术而发展起来。阿里巴巴各个团队都是发自内心地将踩过的坑和总结的经验融入到开源项目中,供业界所有人使用,希望帮助他人解决问题。云栖社区特在2018年年末,将阿里巴巴的一些重要的开源项目进行整理,希望对大家有所帮助。(以下项目排名不分先后)这些优质的开源项目即将成立便于开发者交流的讨论钉钉群。社区将不断更新,欢迎大家加入讨论。前端1.数据驱动的高交互可视化图形语法 AntV - G2G2 是一套基于可视化编码的图形语法,以数据驱动,具有高度的易用性和扩展性,用户无需关注各种繁琐的实现细节,一条语句即可构建出各种各样的可交互的统计图表。同时,G2 也是 AntV 最重要的组成,始于《The Grammar of Graphics》一书描述的视觉编码语法系统(这也是 G2 项目命名的由来)。项目地址:https://github.com/antvis/g22.企业级中后台 UI 解决方案 Fusion DesignFusion Design 是一种旨在提升设计与开发之间 UI 构建效率的工作方式。通过建设基于 DPL 模式的,设计、前端之间的标准协议与工作流,来快速构建符合业务诉求的 DPL,提升 DPL 的构建效率和应用效率,帮助业务快速实现 UI 构建。项目地址:https://fusion.design/3.设计语言 & 前端框架 Ant DesignAnt Design 是蚂蚁金服开发和正在使用的一套企业级的前端设计语言和基于 React 的前端框架实现。它的特性:企业级金融产品的交互语言和视觉体系;丰富实用的 React UI 组件;基于 React 的组件化开发模式;背靠 npm 生态圈;基于 webpack 的调试构建方案,支持 ES6。地址:https://github.com/ant-design/ant-design4.基于 G2 封装的 React 图表库 BizChartsBizCharts 是一个基于 G2 封装的 React 图表库,具有 G2、React 的全部优点,可以让用户以组件的形式组合出无数种图表;并且集成了大量的统计工具,支持多种坐标系绘制,交互定制,动画定制以及图形定制等等。相信 BizCharts 定能成为您的数据可视化项目的强力助手。地址:https://github.com/alibaba/BizCharts5.企业级 Node.js 框架 Egg阿里开源的企业级 Node.js 框架。Egg.js 的插件机制有很高的可扩展性,一个插件只做一件事。Egg.js 通过框架聚合这些插件,并根据自己的业务场景定制配置,这样应用的开发成本就变得很低。地址:https://github.com/eggjs/egg6.基于 React 的前端框架 umiumi 是可插拔的企业级 React 框架,类似 Next.js。地址:https://github.com/umijs/umi7.前端构建和工程化工具 DawnDawn 取「黎明、破晓」之意,原为「阿里云·业务运营团队」内部的前端构建和工程化工具,现已完全开源。它通过 pipeline 和 middleware 将开发过程抽象为相对固定的阶段和有限的操作,简化并统一了开发人员的日常构建与开发相关的工作。地址:https://alibaba.github.io/dawn/8.页面逻辑原型 Ant UX这是一套制作页面逻辑的素材库,当你在产品设计初期,可以用它来绘制页面与页面之间的逻辑图,帮助你了解产品架构,业务流程。配合工具: OmniGraffle ,SketchOmniGraffle 可以用来绘制图表,流程图,组织结构图以及插图,也可以用来组织头脑中思考的信息,组织头脑风暴的结果,绘制心智图,作为样式管理器,或设计网页或PDF文档的原型。Sketch 是一个矢量设计软件,可以帮助你快速投入UI设计当中。地址: http://ux.ant.design/9.跨容器的渲染引擎 RaxRax 是阿里开源的一个通用的 JavaScript 库,主要有 React 兼容的 API 。 使用 React 的就应该已经知道如何使用 Rax。地址:https://alibaba.github.io/rax/10.基于 WebGL 的 Javascript 3D 绘图引擎 G3DG3D 是阿里巴巴开源的一款基于 WebGL 的 javascript 3D 绘图引擎。与其他的 WebGL 3D 引擎相比,G3D 是更加「纯粹」的渲染引擎,也就是说,它完全不依赖任何 DOM API,而是仅仅依赖一个 canvas 对象(或者类 canvas 对象)。该特性使得 G3D 不仅能够运行在浏览器环境中,也能够运行在一些非浏览器的 js 终端环境下(hybrid 环境),比如 GCanvas 环境(基于 Weex 或 ReactNative)。地址:https://alibaba.github.io/G3D/11.跨平台移动开发工具 WeexWeex 是开源的跨平台移动开发工具,能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持iOS、安卓、YunOS及Web等多端部署。地址:https://github.com/apache/incubator-weex/12.基于 Weex 的 UI 组件库 Weex UiWeex Ui 是一个基于 Weex 的富交互、轻量级、高性能的 UI 组件库。地址:https://github.com/alibaba/weex-ui13.动效语言& React 框架动效解决方案 Ant MotionAnt Motion 是从蚂蚁金服的 Ant Design 中提炼出来的动效语言。它不仅仅是动效语言,同时也是一套 React 框架动效解决方案,提供了单项,组合动画,以及整套解决方案,帮助开发者更容易的在项目中使用动效。地址:https://motion.ant.design/14.多页面切换场景统一解决方案 UltraViewPagerUltraViewPager 是阿里开源的一个封装多种特性的 ViewPager ,主要是为多页面切换场景提供统一解决方案。地址:https://github.com/alibaba/UltraViewPager15.模块化 UI 界面方案 Tangram UITangram,七巧板,是天猫团队开源的跨平台模块化 UI 界面方案。Tangram 不仅仅是一个 Native(iOS & Android)的界面开发框架,而是从日常工作中沉淀出的一套界面解决方案,涵盖了 Native SDK、GUI操作台、后端逻辑容器、组件库机制的一整套方案。地址:http://tangram.pingguohe.net/16.自动化测试解决方案 MacacaMacaca是一套完整的自动化测试解决方案,支持移动端和PC端,支持Native, Hybrid, H5 等多种应用类型,并且提供客户端工具和持续集成服务。地址:https://github.com/alibaba/macaca17.基于 React 的中后台应用解决方案 飞冰 ICE飞冰(ICE) 是一套基于 React 的中后台应用解决方案,ICE 包含了一条从设计端到开发端的完整链路,帮助用户快速搭建属于自己的中后台应用。面向设计者端,ICE 提供了 ICE Design 设计语言,来给 UI 界面提供专业的视觉指导。面向开发者端,ICE 提供了 Iceworks 工具,这是一个图形化界面的开发平台,它承载了 ICE 的物料体系和开发体验。地址:https://alibaba.github.io/ice/18.HTML5 互动游戏引擎 HiloHilo 是阿里巴巴集团开发的一款HTML5跨终端游戏解决方案,ta可以帮助开发者快速创建HTML5游戏。地址:https://github.com/hiloteam/Hilo19.JavaScript 模板引擎 Velocity.jsVelocity.js 是velocity模板语法的javascript实现。Velocity 是基于Java的模板引擎,广泛应用在阿里集 体各个子公司。Velocity模板适用于大量模板使用的场景,支持复杂的逻辑运算,包含 基本数据类型、变量赋值和函数等功能。Velocity.js 支持 Node.js 和浏览器环境。地址:https://github.com/shepherdwind/velocity.js20. 非侵入式运行期 AOP 框架 DexposedDexposed 是阿里巴巴无线事业部第一个重量级 Andorid 开源软件,基于 ROOT 社区著名开源项目 Xposed 改造剥离了 ROOT 部分,演化为服务于所在应用自身的 AOP 框架。它支撑了阿里大部分 App 的在线分钟级客户端 bugfix 和线上调试能力。地址:https://github.com/alibaba/dexposed21. 自动化测试解决方案 UI RecorderUI Recorder 是一款零成本的整体自动化测试解决方案,一次自测等于多次测试,测一个浏览器等于测多个浏览器!地址:https://github.com/alibaba/uirecorder22. Android 应用热修复工具 AndFixAndFix 是阿里巴巴开源的 Android 应用热修复工具,帮助 Anroid 开发者修复应用的线上问题。Andfix 是 “Android hot-fix” 的缩写。地址:https://github.com/alibaba/AndFix23. 淘宝 React 框架 React Web淘宝前端团队开源项目React Web,通过与React Native一致的API构建Web应用。地址:https://github.com/taobaofed/react-web24.基于 Node.js 的自动化持续集成 ReliableReliable 是分布式架构的持续集成系统,由Macaca 团队的成员开发。适用于集成构建、集成构建等场景。她是典型的主从结构,分为reliable-master 与 reliable-slave 两部分。地址:https://github.com/reliablejs/reliable-master25. 模拟数据生成器 Mock.jsMock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能:根据数据模板生成模拟数据,模拟 Ajax 请求,生成并返回模拟数据,基于 HTML 模板生成模拟数据。地址:https://github.com/nuysoft/Mock26. React 应用的服务器渲染框架 BeidouBeidou(北斗) 是 NodeJS & React 同构框架,基于Egg.js开发。地址:https://github.com/alibaba/beidouJava1.分布式应用服务开发的一站式解决方案 Spring Cloud AlibabaSpring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。地址:https://github.com/spring-cloud-incubator/spring-cloud-alibaba2. JDBC 连接池、监控组件 DruidDruid是一个 JDBC 组件。监控数据库访问性能。提供了一个高效、功能强大、可扩展性好的数据库连接池。数据库密码加密。SQL执行日志。地址:https://github.com/alibaba/druid3. Java 的 JSON 处理器 fastjsonfastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。主要特点:快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson);强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum);零依赖(没有依赖其它任何类库除了JDK)。地址:https://github.com/alibaba/fastjson4. 服务框架 DubboApache Dubbo (incubating) |是阿里巴巴的一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。地址:https://github.com/alibaba/dubbo5. 企业级流式计算引擎 JStormJStorm 是参考 Apache Storm 实现的实时流式计算框架,在网络IO、线程模型、资源调度、可用性及稳定性上做了持续改进,已被越来越多企业使用。JStorm 可以看作是 storm 的 java 增强版本,除了内核用纯java实现外,还包括了thrift、python、facet ui。从架构上看,其本质是一个基于 zk 的分布式调度系统。地址:https://github.com/alibaba/jstorm6. apns4japns4j 是 Apple Push Notification Service 的 Java 实现!地址:https://github.com/teaey/apns4j7. 分布式数据层 TDDLTDDL 是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能。地址:https://github.com/alibaba/tb_tddl8. 轻量级分布式数据访问层 CobarClientCobar Client是一个轻量级分布式数据访问层(DAL)基于iBatis(已更名为MyBatis)和Spring框架实现。地址:https://github.com/alibaba/cobarclient9. 淘宝定制 JVM:TaobaoJVMTaobaoJVM 基于 OpenJDK HotSpot VM,是国内第一个优化、定制且开源的服务器版Java虚拟机。目前已经在淘宝、天猫上线,全部替换了Oracle官方JVM版本,在性能,功能上都初步体现了它的价值。地址:http://jvm.taobao.org10. Java 图片处理类库 SimpleImageSimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。地址:https://github.com/alibaba/simpleimage11. redis 的 java 客户端 TedisTedis 是另一个 redis 的 java 客户端。Tedis 的目标是打造一个可在生产环境直接使用的高可用 Redis 解决方案。地址:https://github.com/justified/tedis12.开源 Java 诊断工具 ArthasArthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具,深受开发者喜爱。Arthas 采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。地址:https://alibaba.github.io/arthas/13.动态服务发现、配置和服务管理平台 NacosNacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。地址:https://nacos.io/en-us/14.Java 解析 Excel 工具 easyexcelJava 解析、生成 Excel 比较有名的框架有 Apache poi、jxl 。但他们都存在一个严重的问题就是非常的耗内存,poi 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但 POI 还是有一些缺陷,比如 07 版 Excel 解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel 重写了 poi 对 07 版 Excel 的解析,能够原本一个 3M 的 excel 用 POI sax 依然需要 100M 左右内存降低到 KB 级别,并且再大的 excel 不会出现内存溢出,03 版依赖 POI 的 sax 模式。在上层做了模型转换的封装,让使用者更加简单方便。地址:https://github.com/alibaba/easyexcel15.高可用流量管理框架 SentinelSentinel 是面向微服务的轻量级流量控制框架,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源。地址:https://github.com/alibaba/Sentinel16.基于多维度 Metrics 的系统度量和监控中间件 SOFALookoutLookout 是一个利用多维度的 metrics 对目标系统进行度量和监控的项目。Lookout 的多维度 metrics 参考 Metrics 2.0 标准。Lookout 项目分为客户端部分与服务器端部分。客户端是一个 Java 的类库,可以将它植入您的应用代码中采集 metrics 信息,客户端更多详情。服务端代码部分,将于下一版本提供。通过 LOOKOUT 的服务,可以对 metrics 数据进行收集、加工、存储和查询等处理,另外结合 grafana,可做数据可视化展示。地址:https://github.com/alipay/sofa-lookout17.基于 Spring Boot 的研发框架 SOFABootSOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot 提供了让用户可以在 Spring Boot 中非常方便地使用 SOFAStack 相关中间件的能力。地址:https://github.com/alipay/sofa-boot18.轻量级 Java 类隔离容器 SOFAArkSOFAArk 是一款基于 Java 实现的轻量级类隔离容器,由蚂蚁金服公司开源贡献;主要为应用程序提供类隔离和依赖包隔离的能力;基于 Fat Jar 技术,应用可以被打包成一个自包含可运行的 Fat Jar,应用既可以是简单的单模块 Java 应用也可以是 Spring Boot 应用。可访问网址进入快速开始并获取更多详细信息。地址:https://alipay.github.io/sofastack.github.io/19.分布式链路追踪中间件 SOFATracerSOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 traceId 将调用链路中的各种网络调用情况以日志的方式记录下来,以达到透视化网络调用的目的。这些日志可用于故障的快速发现,服务治理等。地址:https://github.com/alipay/sofa-tracer20.高性能 Java RPC 框架 SOFARPCSOFARPC 是一个高可扩展性、高性能、生产级的 Java RPC 框架。在蚂蚁金服 SOFARPC 已经经历了十多年及五代版本的发展。SOFARPC 致力于简化应用之间的 RPC 调用,为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFARPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等等。同时围绕 SOFARPC 框架及其周边组件提供丰富的微服务治理方案。地址:https://github.com/alipay/sofa-rpc21.基于 Netty 的网络通信框架 SOFABoltSOFABolt 是蚂蚁金融服务集团开发的一套基于 Netty 实现的网络通信框架。为了让 Java 程序员能将更多的精力放在基于网络通信的业务逻辑实现上,而不是过多的纠结于网络底层 NIO 的实现以及处理难以调试的网络问题,Netty 应运而生。为了让中间件开发者能将更多的精力放在产品功能特性实现上,而不是重复地一遍遍制造通信框架的轮子,SOFABolt 应运而生。地址:https://github.com/alipay/sofa-bolt22.动态非侵入 AOP 解决方案 JVM-SandboxJVM-Sandbox,JVM 沙箱容器,一种基于 JVM 的非侵入式运行期 AOP 解决方案。地址:https://github.com/alibaba/jvm-sandbox23.面向云的分布式消息领域标准 OpenMessagingOpenMessaging 是由阿里巴巴发起,与雅虎、滴滴出行、Streamlio 公司共同参与创立,旨在创立厂商无关、平台无关的分布式消息及流处理领域的应用开发标准。地址:https://github.com/openmessaging/openmessaging-java24.P2P 文件分发系统 DragonflyDragonfly(蜻蜓)是阿里自研的 P2P 文件分发系统,用于解决大规模文件分发场景下分发耗时、成功率低、带宽浪费等难题。大幅提升发布部署、数据预热、大规模容器镜像分发等业务能力。开源版的 Dragonfly 可用于 P2P 文件分发、容器镜像分发、局部限速、磁盘容量预检等。它支持多种容器技术,对容器本身无需做任何改造,镜像分发比 natvie 方式提速可高达 57 倍,Registry 网络出流量降低99.5%以上。地址:https://github.com/alibaba/Dragonfly25.LayoutManager 定制化布局方案 vlayoutVirtualLayout是一个针对RecyclerView的LayoutManager扩展, 主要提供一整套布局方案和布局间的组件复用的问题。地址:https://github.com/alibaba/vlayout26.Java 代码规约扫描插件 P3C项目包含三部分:PMD 实现、IntelliJ IDEA 插件、Eclipse 插件地址:https://github.com/alibaba/p3c27.Android 容器化框架 AtlasAtlas 是由阿里巴巴移动团队自研的手机淘宝安卓客户端容器化框架,以容器化思路解决大规模团队协作问题,实现并行开发、快速迭代和动态部署,适用于 Android 4.x 以上系统版本的大小型 App 开发。地址:http://atlas.taobao.org/数据库1. 开源数据库 AliSQLAliSQL 是基于 MySQL 官方版本的一个分支,由阿里云数据库团队维护,目前也应用于阿里巴巴集团业务以及阿里云数据库服务。该版本在社区版的基础上做了大量的性能与功能的优化改进。尤其适合电商、云计算以及金融等行业环境。地址:https://github.com/alibaba/AliSQL2. 分布式数据库 OceanBaseOceanBase是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。地址:https://github.com/alibaba/oceanbase3. 分布式数据库同步系统 otterotter 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统。地址:https://github.com/alibaba/otter4. Oracle 数据迁移同步工具 yugongyugong 是阿里巴巴推出的去 Oracle 数据迁移同步工具(全量 + 增量,目标支持 MySQL/DRDS)。地址:https://github.com/alibaba/yugong5. 分布式 SQL 引擎 LealoneLealone 为 HBase 提供一个分布式SQL引擎,尝试将BigTable(HBase)和 RDBMS (H2数据库) 结合的项目。地址:https://github.com/lealone/Lealone6. 关系型数据的分布式处理系统 CobarCobar 是关系型数据的分布式处理系统,它可以在分布式的环境下像传统数据库一样为您提供海量数据服务。以下是快速启动场景:地址:https://github.com/alibaba/cobar7. 分布式关系数据库 Alibaba WaspWasp 是类Google MegaStore & F1的分布式关系数据库。地址:https://github.com/alibaba/wasp系统1. 分布式文件系统 FastDFSFastDFS 是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。地址:https://github.com/happyfish100/fastdfs2. 消息中间件 Apache RocketMQRocketMQ 是一款分布式、队列模型的消息中间件,具有以下特点:能够保证严格的消息顺序提供丰富的消息拉取模式高效的订阅者水平扩展能力实时的消息订阅机制亿级消息堆积能力地址:https://github.com/apache/rocketmq/3. 分布式 key/value 存储系统 TairTair是一个Key/Value结构数据的解决方案,它默认支持基于内存和文件的两种存储方式,分别和我们通常所说的缓存和持久化存储对应。地址:https://github.com/alibaba/tair4. 系统信息采集和监控工具 TsarTsar是淘宝的采集工具,主要用来收集服务器的系统信息(如cpu,io,mem,tcp等)以及应用数据(如squid haproxy nginx等),tsar支持实时查看和历史查看,方便了解应用和服务器的信息!地址:https://github.com/alibaba/tsar5. 分布式消息中间件 Metamorphosis91560100541c91d5c14aedad0031b44492cbc892Metamorphosis (MetaQ) 是一个高性能、高可用、可扩展的分布式消息中间件,类似于LinkedIn的Kafka,具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用于大吞吐量、顺序消息、广播和日志数据传输等场景。地址:https://github.com/killme2008/Metamorphosis6. 淘宝Web服务器 TengineTengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。地址:https://github.com/alibaba/tengine7. 分布式文件系统 TFSTFS(Taobao FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,其设计目标是支持海量的非结构化数据。地址:https://github.com/alibaba/tfs8. 异步任务处理系统 TBScheduletbschedule 是一个简洁的分布式任务调度引擎,目的是让一种批量任务或者不断变化的任务,能够被动态的分配到多个主机的JVM中,不同的线程组中并行执行。所有的任务能够被不重复,不遗漏的快速处理。地址:https://github.com/taobao/TBSchedule9. 容器引擎 Pouch04a2ed22d016dde2b1e2f1a75dd6773b9edcd6aaPouch 是一款轻量级的容器引擎,拥有快速高效、可移植性高、资源占用少等特性,主要帮助阿里更快的做到内部业务的交付,同时提高超大规模下数据中心的物理资源利用率。地址:https://github.com/alibaba/pouch10. 在线分析查询系统 mdrillmdrill是一个分布式的在线分析查询系统,基于hadoop,lucene,solr,jstorm等开源系统作为实现,基于SQL的查询语法。 mdrill是一个能够对大量数据进行分布式处理的软件框架。mdrill是快速的高性能的,他的底层因使用了索引、列式存储、以及内存cache等技 术,使得数据扫描的速度大为增加。mdrill是分布式的,它以并行的方式工作,通过并行处理加快处理速度。地址:https://github.com/alibaba/mdrill教程1. 七天学会NodeJS文档七天学会 NodeJS 是阿里巴巴国际站前端技术部编写的开源文档,用于学习 Node.js。地址:https://github.com/nqdeng/7-days-nodejs2. Nginx开发从入门到精通nginx由于出色的性能,在世界范围内受到了越来越多人的关注,在淘宝内部它更是被广泛的使用,众多的开发以及运维同学都迫切的想要了解nginx模块的开发以及它的内部原理,但是国内却没有一本关于这方面的书,源于此我们决定自己来写一本。本书的作者为淘宝核心系统服务器平台组的成员,本书写作的思路是从模块开发逐渐过渡到nginx原理剖析。地址:https://github.com/taobao/nginx-book以上为阿里巴巴重点开源项目的分享,希望对大家有所帮助!更多技术干货开源,请关注云栖社区github:https://github.com/alibaba-developer本文作者:山哥在这里阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

December 12, 2018 · 4 min · jiezi

阿里云推出全栈IPv6解决方案,加速推进下一代互联网应用

IPv4地址已接近枯竭,被誉为下一代互联网技术的IPv6成为新的“全球互联网门牌号”,它可以让地球上的每一粒沙子都拥有地址。12月6日,阿里云宣布为企业提供全栈IPv6解决方案,加速推进中国下一代互联网应用。作为国内首个全面支持IPv6的云厂商,过去5个月,阿里云DNS的IPv6日查询量增长了600倍,目前,核心产品已全面支持。当下,各国都在加速推进下一代互联网的部署,今年5月,工信部发布了推进互联网协议第六版(IPv6)规模部署行动计划,IPv6改造已迫在眉睫。阿里巴巴2017年开始投入IPv6技术的研发与应用,并率先实现了大规模应用。其中,优酷、淘宝、天猫以及高德地图等多个用户量过亿的应用已开花结果,实现了IPv6的落地。现在,所有企业都可以通过阿里云获得这一能力。“我们希望通过阿里云向客户、合作伙伴分享向IPv6迁移的技术与经验,共同构建中国的IPv6生态,推动中国互联网加速迈向下一代互联网。” 阿里巴巴集团CTO、阿里云智能总裁张建锋表示。IPv6的改造是一项庞大的系统工程,如果用传统方式,需要对服务器、网络以及应用进行全方位的升级,不仅技术挑战大,而且周期长。阿里云提供了国内最完整的IPv6解决方案,可帮助企业最短几分钟完成业务系统的升级,同时保障业务的连续性。阿里云国内数十个IDC已支持IPv6。阿里云核心产品如ECS、VPC、OSS等均已支持IPv6自研技术Netframe拥有400G级IPv6转发能力。AliBGP实现跨厂商路由协议对接,解决了多厂商兼容性问题。AliGuard可以提供T级抗攻击能力。据了解,阿里云IPv6全栈解决方案已服务超过200个行业场景,涵盖零售、金融、制造、广电传媒等行业。新浪微博通过阿里云完成了IPv6公网访问业务的升级改造,未来将通过无NAT的IPv6源地址更精准地描绘用户画像,为用户提供千人千面的定制化服务;长江电力基于IPv6网站解决方案,实现了互联网网站和应用系统的双栈访问,为终端用户提供了更流畅的网络体验。阿里云智能研发总经理蒋江伟(花名:小邪)表示,“阿里云将与运营商、设备商、应用软件厂商深入合作,共同构建IPv6生态,加速推进中国IPv6的规模部署。”本文作者:阿里云头条阅读原文本文为云栖社区原创内容,未经允许不得转载。

December 6, 2018 · 1 min · jiezi

TableStore轻松实现轨迹管理与地理围栏

摘要: 基于TableStore轻松实现亿量级轨迹管理与地理围栏一、方案背景轨迹管理系统日常生活中使用非常普遍,如外卖派送轨迹、快递物流流转、车辆定位轨迹等。该场景与地理位置管理类似,核心点与瓶颈都在数据库的存储性能与查询能力,同时需要时间字段正序排列,保证轨迹点顺序;一方面,存储服务需要应对海量数据的低延迟存、读,另一方面,存储服务也要提供高效的多维度数据检索与排序。表格存储(TableStore)对于轨迹管理场景,依然可以胜任,完全具备实现轨迹管理系统的能力。不妨来体验一下基于TableStore打造的【亿量级摩托车管理系统】样例;需求场景某城市市区出于安全考虑,限制摩托车进入一定的区域范围。某摩托车租赁公司,为了更好管理所辖摩托车的违章问题,对自己所辖摩托车安装定位系统,定时采集摩托车位置。摩托车租赁公司,可以通过轨迹管理平台,查询统计违章情况,也可作为依据,提醒违章的租赁用户,过多违章拉入黑名单;查询场景:【2018年11月01日】编号【id00001】的摩托车行驶轨迹与违章情况查询;样例如下:注:该样例提供了【亿量级】轨迹数据。官网控制台地址:项目样例样例内嵌在表格存储控制台中,用户可登录控制台体验系统(若为表格存储的新用户,需要点击开通服务后体验,开通免费,订单数据存储在公共实例中,体验不消耗用户存储、流量、Cu)。表格存储(TableStore)方案采用表格存储(TableStore)轻松搭建一套:亿量级摩托车管理系统。多元索引功能提供GEO检索、多维查询的能力,通过对时间的排序获取追踪设备的轨迹。同时,用户可随时创建索引然后完成自动同步,不用担心存量数据问题。TableStore作为阿里云提供的一款全托管、零运维的分布式NoSql型数据存储服务,具有【海量数据存储】、【热点数据自动分片】、【海量数据多维检索】等功能,有效的地解决了GEO数据量大膨胀这一挑战;SearchIndex功能在保证用户数据高可用的基础上,提供了数据多维度搜索、排序等能力。针对多种场景创建多种索引,实现多种模式的检索。用户可以仅在需要的时候创建、开通索引。由TableStore来保证数据同步的一致性,这极大的降低了用户的方案设计、服务运维、代码开发等工作量。二、搭建准备若您对于基于TableStore实现的【亿量级摩托车管理系统】体验不错,并希望开始自己系统的搭建之旅,只需按照如下步骤便可以着手搭建了:1、开通表格存储通过控制台开通表格存储服务,表格存储即开即用(后付费),采用按量付费方式,已为用户提供足够功能测试的免费额度。表格存储官网控制台、免费额度说明。2、创建实例通过控制台创建表格存储实例,选择支持多元索引的Region。(当前阶段SearchIndex功能尚未商业化,暂时开放北京,上海,杭州和深圳四地,其余地区将逐渐开放)创建实例后,提交工单申请多元索引功能邀测(商业化后默认打开,不使用不收费)。邀测地址:提工单,选择【表格存储】>【产品功能、特性咨询】>【创建工单】,申请内容如下:问题描述:请填写【申请SearchIndex邀测】机密信息:请填写【地域+实例名】,例:上海+myInstanceName3、SDK下载使用具有多元索引(SearchIndex)的SDK,官网地址,暂时java、go、node.js三种SDK增加了新功能java-SDK<dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>tablestore</artifactId> <version>4.7.4</version></dependency>go-SDK$ go get github.com/aliyun/aliyun-tablestore-go-sdk4、表设计店铺检索系统样例,仅简易使用一张店铺表,主要包含字段:店铺类型、店铺名称、店铺地理位置、店铺平均评分、人均消费消等。表设计如下:表名:geo_track列名数据类型索引类型字段说明_id(主键列)String MD5(mId + timestamp)避免热点mIdStirng 摩托车编号timestamplongLONG时间点(毫秒时间戳)posStringGEO_POINT车辆位置:“30.132,120.082”(纬度,精度)…………三、开始搭建(核心代码)1、创建数据表用户仅需在完成邀测的实例下创建“摩托车轨迹表”:通过控制台创建、管理数据表(用户也可以通过SDK直接创建):其他表如租赁用户表、摩托车信息表等,根据需求创建:这里仅展示轨迹表,表名:geo_track2、创建数据表索引TableStore自动做全量、增量的索引数据同步:用户可以通过控制台创建索引、管理索引(也可以通过SDK创建索引)3、数据导入插入部分测试数据(控制台样例中插入了1.08亿条(1万辆摩托70天24小时*6个"10分钟点")数据,用户自己可以通过控制台插入少量测试数据);表名:geo_track摩托车编号轨迹点md5(mId + timestamp)(主键)时间店铺位置id00001f50d55bec347253c24dc9144dff3e3b7154110360000030.30094,120.01278表名:moto_user摩托车编号(主键)摩托车颜色摩托车品牌摩托车租赁用户id00001银灰色H牌摩托车杨六4、数据读取数据读取分为两类:主键读取(摩托车信息查询)基于原生表格存储的主键列获取:getRow, getRange, batchGetRow等。主键读取用于索引(自动)反查,用户也可以提供主键(摩托车编号)单条查询的页面,查询速度极快。单主键查询方式不支持多维度检索;索引读取(轨迹信息查询)基于新SearchIndex功能Query:search接口。用户可以自由设计索引字段的多维度条件组合查询。通过设置选择不同的查询参数,构建不同的查询条件、不同排序方式;目前支持:精确查询、范围查询、前缀查询、匹配查询、通配符查询、短语匹配查询、分词字符串查询,并通过布尔与、或组合。如【2018年11月01日,id00001号摩托车,行驶轨迹及违章查询】Query条件如下:List<Query> mustQueries = new ArrayList<Query>();List<String> polygonList = Arrays.asList(//地理围栏,禁摩区域 “30.262348,120.092127”, “30.311668,120.079761”, “30.332413,120.129371”, …);String mId = “id00001”;Long timeStart = [2018-11-01时间戳];Long timeEnd = [2018-11-02时间戳];GeoPolygonQuery geoPolygonQuery = new GeoPolygonQuery();geoPolygonQuery.setPoints(polygonList);geoPolygonQuery.setFieldName(“pos”);mustQueries.add(geoPolygonQuery);TermQuery termQuery = new TermQuery();termQuery.setFieldName(“mId”);termQuery.setTerm(ColumnValue.fromString(request.getmId()));mustQueries.add(termQuery);RangeQuery rangeQuery = new RangeQuery();rangeQuery.setFieldName(“timestamp”);rangeQuery.setFrom(ColumnValue.fromDouble(timeStart, true);rangeQuery.setTo(ColumnValue.fromDouble(timeEnd, false);mustQueries.add(rangeQuery);BoolQuery boolQuery = new BoolQuery();boolQuery.setMustQueries(mustQueries);这样,系统的核心代码已经完成,基于表格存储搭亿量级“摩托车管理系统”,是不是很简单?本文作者:潭潭阅读原文本文为云栖社区原创内容,未经允许不得转载。

November 15, 2018 · 1 min · jiezi