Navigation

    西南IT社区
    • Register
    • Login
    • Search
    • 主页
    • 问答
    • 话题
    • 热门
    • 圈子
    • 工作机会
    • 活动
    • 项目
    1. Home
    2. diaochu76
    • Profile
    • Following 0
    • Followers 0
    • Topics 8
    • Posts 9
    • Best 0
    • Groups 0

    diaochu76

    @diaochu76

    0
    Reputation
    2
    Profile views
    9
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    diaochu76 Follow

    Latest posts made by diaochu76

    • 开放实时数据处理平台TwitterStorm

      Twitter将Storm正式开源了,这是一个分布式的、容错的实时计算系统,它被托管在GitHub上,遵循 Eclipse Public License 1.0。Storm是由BackType开发的实时处理系统,BackType现在已在Twitter麾下。GitHub上的最新版本是Storm 0.5.2,基本是用Clojure写的。

      Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。 Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。 Storm的主工程师Nathan Marz表示:

      Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比 Hadoop之于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。更棒的是你可以使用任意编程语言来做开发。 Storm的主要特点如下:

      简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。

      容错性。Storm会管理工作进程和节点的故障。水平扩展。计算是在多个线程、进程和服务器之间并行进行的。可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。快速。系统的设计保证了消息能得到快速的处理,使用ØMQ作为其底层消息队列。

      本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。

      Storm集群由一个主节点和多个工作节点组成,两者的协调工作是由Apache ZooKeeper来完成的。主节点运行了一个名为“Nimbus”的守护进程,用于分配代码、布置任务及故障检测。每个工作节 点都运行了一个名为“Supervisor”的守护进程,用于监听工作,开始并终止工作进程。Nimbus和Supervisor都能快速失败,而且是无 状态的;所有状态都保存在ZooKeeper或本地磁盘中,这意味着即使kill -9 杀掉Nimbus和Supervisors,它们也能在启动时从备份中恢复跟没有发生过一样。这样的设计使得Storm集群变得十分健壮。

      Storm的术语包括Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology。Stream是被处理的数据。Sprout是数据源。Bolt处理数据。Task是运行于Spout或Bolt中的 线程。Worker是运行这些线程的进程。Stream Grouping规定了Bolt接收什么东西作为输入数据。数据可以随机分配(术语为Shuffle),或者根据字段值分配(术语为Fields),或者 广播(术语为All),或者总是发给一个Task(术语为Global),也可以不关心该数据(术语为None),或者由自定义逻辑来决定(术语为 Direct)。Topology是由Stream Grouping连接起来的Spout和Bolt节点网络。在Storm Concepts页面里对这些术语有更详细的描述。

      项目地址: https://github.com/nathanmarz/storm

      替代文字

      posted in 开源推荐
      diaochu76
      diaochu76
    • 流计算和批处理summingbird

      twitter 开源了summingbird ,一个流计算和批处理模式的融合体,用户编写的逻辑既可以运行在 Storm 上,也可以跑在#Hadoop#上,将来还计划支持Spark。听说是#storm#和hadoop的合体。雅虎也有类似的开源产品 #storm-yarn#。

      传统的数据融合通常基于批模式。在批的模式下,我们会通过一些周期性运行的ETL JOB,将数据从关系型数据库、文件存储向下游的目标数据库进行同步,中间可能有各种类型的转换。

      另一种是Data Pipeline模式。与批模式相比相比, 其最核心的区别是将批量变为实时:输入的数据不再是周期性的去获取,而是源源不断的来自于数据库的日志、消息队列的消息。进而通过一个实时计算引擎,进行各种聚合运算,产生输出结果,并且写入下游。现代的一些处理框架,包括Flink、Kafka Streams、Spark,或多或少都能够支持批和流两种概念。只不过像Kafka,其原生就是为流而生,所以如果基于Kafka Connect做批流一体,你可能需要对批量的数据处理做一些额外工作,这是我今天重点要介绍的。

      项目地址: https://github.com/twitter/summingbird

      替代文字

      posted in 开源推荐
      diaochu76
      diaochu76
    • 运维配置管理数据库系统WeCMDB

      WeCMDB(Configuration Management Database 配置管理数据库),是源自微众银行运维管理实践的的一套配置管理数据库系统。为高效支撑海量用户和巨量数据的互联网应用, 分布式架构被广泛采用于支撑当前的系统,然而分布式架构同时也刷新了运维管理的要求。相对于传统架构,分布式架构给IT基础架构带来了三个变化:海量的服务器、频繁的滚动发布、和复杂的服务间依赖关系。 由此带来的运维问题快速推动了DevOps工具的发展,以及智能运维管理理念的变化。

      CMDB,作为运维工具的核心,提供了全体系IT信息唯一数据源,是IT运维自动化、智能化的基础和前提条件。依赖可靠的CMDB,IT信息从物理层(数据中心、机架机位、服务器、网络信息等), 到逻辑层(IP、系统架构信息),到应用层(业务应用系统信息)被完整的记录并管理起来。

      WeCMDB是集中配置数据中心,管理IT各层面组件及组件关系信息。同时与自动化运维管理工具紧密相联,支持运维管理工具及流程的运作,发挥配置信息的价值,同时依赖这些工具、流程保证数据准确性。

      项目地址: https://github.com/WeBankPartners/we-cmdb

      替代文字

      posted in 开源推荐
      diaochu76
      diaochu76
    • web虚拟现实框架A-Frame

      A-Frame 是 Mozilla 开源的网页虚拟现实体验( WebVR )框架,可用于桌面、iPhone(即将支持安卓)以及 Oculus Rift。A-Frame 可以让创建 WebVR 体验变得更简单。

      全新的开源框架 A-Frame,旨在帮助开发者更轻松的开发在浏览器中运行的高性能响应式的VR体验,而不用学习强大但非常复杂的 WebGL。Mozila 旗下的 MozVR 团队已经在 WebVR 技术上进行了很多试验,今天发布的 A-Frame 则是他们研究成果的结晶,已经可以提供给开发者进行探索了。开发者只需一行代码就可以集成支持 VR 页面所需的基本组件。

      A-Frame 设计成 web 开发者很熟悉的模样。它封装了 WebGL 的功能到 HTML 自定义元素,所以创建一个高性能的虚拟现实体验就十分简单。

      A- Frame很大的一个优点是提供了对 VR 头戴设备和非 VR 设备——例如电脑以及智能手机——之间的无缝响应。A-Frame 目前支持 Oculus Rift DK2 以及 Cardboard 类的纸盒眼镜,并会在未来对更多的设备提供支持。根据 MozVR 团队的消息,他们很快将会利用 Oculus 最新的 0.8版本Runtime 来更好的优化75Hz的头部追踪。文末将会教你如何设置 Oculus Rift使其支持 WebVR,而手机端的 VR 模式以及所有的非 VR 渲染则可以在任何支持 WebGL 的浏览器中工作。

      A-Frame 拥有许多的开发模块供开发者使用,例如模型、视频、天空、几何体等等,同时集成了控制、动画以及光标,使得开发者能够轻松的构建富交互的VR网站。A- Frame 提供了许多模板,帮助开发者迅速上手,并且 Mozilla 还鼓励开发者之间分享自己制作的模板,来加快 WebVR 网站的创建。

      项目地址: https://github.com/aframevr/aframe

      替代文字

      posted in 开源推荐
      diaochu76
      diaochu76
    • HTML网页开发工具MozillaThimble

      Thimble 是 Mozilla 打造的一个在线代码编辑器,用它可以很轻松地创建和发布一个您自己的网页,一切伴随着 HTML、CSS 和 JavaScript。

      Thimble 是 Mozilla 学习网络的一部分。Thimble采用了可视化的HTML编辑器,用户可以在浏览器的右侧编辑HTML网页,预览网页效果和进行修正,之后通过点击“Publish” 一键发布和分享功能齐全的网页。

      Thimble消除了初级用户学习代码的很多障碍,还包含了帮助初学者快速入门的教程。

      Mozilla对在线代码编辑器Thimble进行了更新,带来了更时尚的用户界面并允 许用户拖拽zip压缩的网站文档到编辑器,更加直接的方式来对代码进行编译。同很多IDE相同,Thimble将代码放置在左侧,而右侧进行直接预览。该 编辑器支持HTML、CSS和JavaScript等网页标准,定位针对教室的在线教育工具。

      除用户界面的更新和对拖拽功能的支持外,Thimble还针对那些刚刚起步的代码学习者进行了优化,以便于提升融入到编程的乐趣中。Thimble还能作为网页预览工具能够让用户知道自己设计的东西在移动端会是什么样子。

      项目地址: https://github.com/mozilla/thimble.mozilla.org

      替代文字

      posted in 开源推荐
      diaochu76
      diaochu76
    • 松耦合和紧耦合的架构设计、性能对比

      如果要在计算器的业务逻辑加上其他操作符运算,能否不影响原来的业务逻辑?这时可以用继承、多态的面向对象思想方法把各种操作符分开不同的类,如果要改动或增加删除某一个操作符,都不会影响其他操作符,这就进一步降低了耦合度。
      先说紧耦合,这种架构是我们在Laxcus 0.x、1.x中采用的。紧耦合架构本质是一个Client/Server模型。客户机发起请求给服务器,服务器收到,根据请求做出应答,然后反馈给客户机。这种架构最典型的应用就是我们每天都用到的WEB服务。优点嘛,就是简单。架构简单、设计简单、开发周期短、能够快速投入部署和应用。在Laxcus集群的早期运行中,这些特点都得到有力的验证。
      但是到了后期,随着Laxcus集群规模的不断扩大,访问量的不断增加,尤其是数据计算量、计算时间成倍数的增长后,紧耦合架构渐渐不堪重负,缺点开始不断暴露出来,主要有以下几个方面:无法支持大规模的计算业务;计算机载荷无法控制;任务执行过程中管理难度大;对网络资源消耗大;安全控制力度差;程序代码之间关联度过高,不利于模块化处理;以上现象最终导致系统稳定性变差。
      这些问题出现后,我们开始考虑修改系统设计。经过多番考量、比较、权衡之后,我们决定改用松耦合架构重新规划系统设计。新框架是在原来Client/Server模型之上的改进,即在Client/Server模型之间加入一个代理(Agent),把CS模型变成CAS模型。在新的架构下,客户机的角色不变,代理服务器承担起与客户机通信,和对客户机的识别判断工作,服务器位于代理服务器后面,对客户机来说不可见,它只负责数据处理工作。另外我们也把CS模型的同步操作改为CAS的代理处理。    在设计新架构的同时,我们还发现,如果要适应松耦合架构,原来在紧耦合架构下运行的程序代码,因为现在的工作方式发生了发生了变化,它们几乎都要重写。这可是一个庞大的工程,需要消耗大量的人力、时间去修改和调试。所以我们在松耦合架构之上,结合代理服务器,又设计了一套Invoke/Produce机制。这是另一种代理方案,是针对数据处理进行抽象化处理和分组分级管理。原来的数据处理和业务逻辑套用这套机制后,程序代码基本不用修改,转移到CAS模型上运行就可以了。1c8d198c-af4f-4ae1-872f-a981168d5465-image.png ca40d398-2be7-4863-8c81-2790e9227ac3-image.png

      posted in 极客生涯
      diaochu76
      diaochu76
    • 高性能内嵌式NoSQL数据库KitDB

      KitDB 是一个内嵌式持久型的高速 NoSQL 存储 lib,以 jar 包方式嵌入到应用中。

      KitDB 提供了类似 Redis 的数据结构。如 KV、List、Map、ZSET 等。也提供了 TTL(生存时间)、备份、ACID 事物,多节点强一致性等功能。

      KitDB 完全基于磁盘存储,并提供最高百万级别的查询性能和十万的写入性能。

      KitDB完全基于磁盘,不受内存限制;KV、List、Map、Zet、ZSET 等丰富的数据结构;最高百万级别的查询性能和十万级的写入性能;原子性写入,读写无冲突;拥有TTL(生存时间);支持备份与恢复;ACID事务多节点一致性支持(官方插件使用 Raft 协议支持强一致性,也可自行使用其他协议或方式)。

      项目地址: http://kitdb.top/#/

      02c67b91-83be-48ff-8dc3-5d3b084d917d-image.png

      posted in 开源推荐
      diaochu76
      diaochu76
    • RE: git仓库如何忽略已经存在的文件

      删除本地缓存,然后在编辑 .gitignore 就可以生效了

      // package-lock.json 是你要删除的文件
      git rm --cached  package-lock.json
      
      posted in 技术答疑
      diaochu76
      diaochu76
    • electron程序打包后,安装包体积太大怎么办!

      javascript一直是个谜,近两年出了新玩法,不光能写网页,还能写后端,写桌面端,这个对于前端开发人员来说,简直是一个福音!

      之前在开发桌面程序的时候,对比了一下nw.js 和 electron, 最后选用electron来开发,electron整体效果还不错,体验上和原生的区别不大,唯一的缺点就是打包出来得应用太大了,初始打包就高达49M,这个对于一些小工具来说,简直就是一场灾难

      经过一番搜寻,找到了两个指数较高的打包工具,一个国产的,另外一个是国外的

      https://miniblink.net/

      2f934388-20f7-4dcc-9e3e-412976ba6e5b-图片.png

      https://opencollective.com/tauri

      b6b841e4-fc69-409e-874c-5bc9b6aa2aae-图片.png

      从功能上来看,tauri的生态更为丰富,有较多的维护者,欢迎入坑!

      posted in 开源推荐
      diaochu76
      diaochu76