您的位置:首页 > 新闻资讯 > 企业新闻

萍乡钢瓶溯源管理系统

来源: 发布时间:2020-11-21 点击数:
  萍乡钢瓶溯源管理系统   萍乡钢瓶溯源管理系统本文是关于 Newbe.Claptrap 项目主体内容的介绍,读者可以通过这篇文章,大体了解项目内容。   轮子源于需求随着互联网应用的蓬勃发展,相关的技术理论和实现手段也在被不断创造出来。诸如“云原生架构”、“微服务架构”、“DevOps”等一系列关键词越来越多的出现在工程师的视之中。总结来看,这些新理论和新技术的出现,都是为了解决互联网应用中出现的一些技术痛点:   更高的容量扩展性要求。在商业成功的基础前提下,互联网应用的用户数量、系统压力和硬件设备数量等方面都会随着时间的推移出现明显的增长。这就对应用本省的容量可扩展性提出了要求。这种容量可扩展性通常被描述为“应用需要支持水平扩展”。   更高的系统稳定性要求。应用程序能够不间断运行,确保商业活动的持续进展,这是任何与这个应用系统相关的人员都希望见到的。但是要做到这点,通常来说是十分困难的。而现今的互联网应用在面对诸多同类竞争者的情况下,如果在这方面做得不够健全,那么很可能会失去一部分用户的青睐。   更高的功能扩展性要【重庆展会公司】 求。“拥抱变化”,当人们提到“敏捷项目管理”相关的内容时,都会涉及到的一个词语。这个词语充分体现了当今的互联网应用若要成功,在功能性上做到出彩做到成功是多么的重要。也从一个侧面体现了当前互联网环境下产品需求的多变。而作为系统工程师,在应用建立之初就应该考虑这点。   更高的开发易用度要求。这里所属的开发易用度是指,在应用系统自身在进行开发时的难易程度。要做到越易于开发,在应用自身的代码结构,可测试性,可部署性上都需要作出相应的努力。   更高的性能要求。这里提到的性能要求,是特指在系统容量增加时的性能要求。避免系统的单点性能问题,让应用系统具备可水平扩展的特性。通常来说,在性能出现问题时,若可以通过增加物理设备来解决问题,通常来说是为简单的办法。而在不同的系统容量之下,系统性能的优化方案通常是不同的。因此结合应用场景进行技术方案的选型一直都是系统工程师所需要考虑的问题。   本项目,就是基于以上这些系统功能特性要求所总结出来的一套开发框架。这其中包含了相关的理论基石、开发类库和技术规约。   世界上本也不存在“银弹”。一套框架解决不了所有问题。 ——不愿意透露姓名的月落从需求出发在讲解分布式系统时,常常会用到“账号转账”这个简单的业务场景来配合描述。这里阐述一下这个业务场景。   假设我们需要建设一个具备账号体系的业务系统。每个账号都有余额。现在需要执行一次转账操作,将账号A的余额中的300划转给账号B。另外,基于上节的基本要求,我们在实现这个场景时,需要考虑以下这些内容:   需要应对系统容量的激增。应用初期可能只有1000个初始用户。由于应用推广效果良好以及机器人账号的涌入,用户数量实现了在一个月内实现了三个数量级的攀升,也就是增长到了百万级别。需要考虑系统的稳定性和可恢复性。尽可能减少系统整体的平均故障时间,即使出现系统故障也应该是尽可能易于恢复的。也就是,要避免出现单点故障。需要考虑业务的可扩展性。后续可能需要增加一些业务逻辑:按照账户等级限制日转账额、转账成功后进行短信通知、转账支持一定额度的免密转账、特定的账号实现“T+1”【重庆展位设计】 到账。需要考虑代码的可测试性。系统的业务代码和系统代码能够良好的分离,能够通过单元测试的手段初步验证业务代码和系统代码的正确性和性能。轮子的理论本节将介绍一些和本框架紧密结合的理论内容,便于读者在后续的过程中理解本框架的工作过程。   Actor模式Actor模式是一种并发编程模型。通过这种编程模型的应用可以很好的解决一些系统的并发问题。这里所提到的并发问题是指计算机对同一数据进行逻辑处理时,可能由于存在多个同时发起的请求可能导致数据出现不正确的问题。这个问题在进行多线程编程时一定会遇到的问题。举个简单的例子,假如在不加同步锁的情况下,使用100个线程并发对内存中的一个int变量执行++操作。那么终这个变量的结果往往小于100。此处Actor模式是如何避免此问题的。   首先,为了便于理解,读者在此处可以将Actor认为是一个对象。在面向对象的语言(Java、C#等)当中,可以认为Actor就是通过new关键词创建出来的对象。不过这个对象有一些特别的特性:   拥有属于自身的状态。对象都可以拥有自身的属性,这是面向对象语言基本都具备的功能。在Actor模式中,这些属性都被统称为Actor的状态(State)。Actor的状态由Actor自身进行维护。   这就强调了两点:   、Actor的状态只能由自身进行改变,若要从外部改变Actor的状态,只能通过调用Actor才能改变。   更新Actor状态   第二、Actor的状态只在Actor内部进行维护,不与当前Actor之外的任何对象共享。这里说的不共享也是强调其不能通过外部某个属性的改变而导致Actor内部状态的变化。这点主要是为了区别于一些具备“对象引用”语言特性的编程语言而言的。例如:在C#的class的public属性,假如是引用类型,那么在外部获得这个class之后是可以改变class中的属性的。但是这在Actor模式当中是不被允许的。   共享Actor状态   不过从Actor内部读取数据到外部,这仍然是允许的。   读取Actor状态   单线程。Actor通常同一时间只能接受一个调用。这里所述的线程不完全是指计算机中的线程,是为了凸显“Actor同一时间只能处理一个请求的特性”而使用的词语。假如当前Actor正在接受一个调用,那么剩余的调用都会阻塞,直到调用结束,下一个请求才允许被进入。这其实类似于一个同步锁的机制。通过这种机制就避免了对Actor内部状态进行修改时,存在并发问题的可能。具体一点说明:如果使用100个线程对一个Actor进行并发调用,让Actor对状态中的一个int变量进行++操作。终这个状态的数值一定是100。   并发调用Actor   不过单线程也不是的,在不存在并发问题的请求情况下,允许并发处理。例如读取Actor中的状态,这通常不会有并发问题,那么此时就允许进行并发操作。   并发读取Actor   读到Actor单线程特性时,通常读者会考虑到这是否会导致Actor本身处理过慢而产生性能问题呢?关于这点,希望读者继续持有这个问题往后阅读,寻找。事件溯源模式事件溯源模式是一种软件设计思路。这种设计思路通常与传统的采用增删查改(CRUD)为主的系统设计思路相区别。CRUD应用通常存在一些局限性:   通常来说CRUD应用会采用直接操作数据存储的做法。这样的实现方式可能会由于对数据库优化不足而导致性能瓶颈,并且这种做较难实现应用伸缩。在特定的领域通常存在一些数据需要注意对并发问题进行处理,以防止数据更新的错误。这通常需要引入“锁”、“事务”等相关的技术来避免此类问题。但这样又有可能引发性能上的损失。除非增加额外的审计手段,否则通常来说数据的变更历史是不可追踪的。因为数据存储中通常保存的是数据终的状态。与CRUD做法对比,事件溯源则从设计上避免了上述描述的局限性。接下来围绕上文中提到的“转账”业务场景简述事件溯源的基础工作方式。   采用CRUD的方法实现“转账”。   采用CRUD的方法实现“转账”   采用事件溯源的方式实现“转账”。   采用事件溯源的方法实现“转账”   如上图所示,通过事件溯源模式将转账业务涉及的余额变动采用事件的方式进行存储。同样也实现了业务本身,而这样却带来了一些好处:   通过事件,可以还原出账号任何阶段的余额,这就一定程度实现了对账号余额的跟踪。由于两个账号的事件是独立处理的。因此,两个账号的处理速度不会相互影响。例如,账号B的转入可能由于需要额外的处理,稍有延迟,但账号A仍然可以的转出。可以通过订阅事件来做一些业务的异步处理。例如:更新数据库中的统计数据,发送短信通知等其他的一些异步操作。当然引入事件溯源模式之后也就引入了事件溯源相关的一些技术问题。例如:事件所消耗的存储可能较为巨大;不得不应用终一致性;事件具备不可变性,重构时可能较为困难等。相关的这些问题在一些文章中会有较为细致的说明。读者可以阅读后续的延伸阅读内容,进而进行了解与评估。   业务复杂度是不会因为系统设计变化而减少的,它只是从一个地方转移到了另外的地方。——总说自己菜的月落让轮子转起来基于读者已经大体理解了上节理论的基础上,本节将结合上述描述的“转账”业务场景,介绍本框架的工作原理。首先读者需要了解一下本框架的两个名词。   Claptrap   Claptrap   Claptrap是本框架定义的一种特殊Actor。除了上文中提到Actor两种特性之外,Claptrap还被定义为具有以下特性:   状态由事件进行控制。Actor的状态在Actor内部进行维护。Claptrap同样也是如此,不过改变Claptrap的状态除了在Actor之外,还限定其只能通过事件进行改变。这就将事件溯源模式与Actor模式进行了结合。通过事件溯源模式保证了Actor状态的正确性和可追溯性。这些改变Claptrap状态的事件是由Claptrap自身产生的。事件产生的原因可以是外部的调用也可以是Claptrap内部的类触发器机制产生的。   Minion   Minion   Minion是本框架定义的一种特殊Actor。是在Claptrap基础上做出的调整。其具备以下特性:   从对应的Claptrap读取事件。与Claptrap相同,Minion的状态也由事件进行控制。不同的是,Minion就像其字面意思一样,总是从对应的Claptrap处获取事件,从而改变自身的状态。因此,其可以异步的处理Claptrap产生事件之后的后续操作。   业务实现接下来有了前面的基础介绍,现在介绍一下本框架如何实现上文中的“转账”场景。首先可以通过下图来了解一下主要的流程:   Claptrap 【重庆展览公司】& Minion   如上图所示,整个流程便是本框架实现业务场景的大体过程。另外,还有一些需要指出的是:   图中Client与Claptrap的调用等待只有阶段的时候存在,也就是说,这使得Client可以更快的得到响应,不必等待整个流程结束。Claptrap A 在处理完自身请求,并将事件发送给 Minion A 之后就可以重新接受请求,这样提高了Claptrap A的吞吐量。Minion不仅仅只能处理Claptrap之间的调用代理。在Minion当中还可以根据业务需求进行:发送短信,更新数据库统计数据等其他操作。Minion也可以具备自己的状态,将部分数据维持在自身的状态中以便外部可以从自身进行查询,而不需要从对应的Claptrap中进行查询。例如:统计该账号近24小时的转账变动,以便快速查询。业务容量前文提到本框架需要建设的是一个可以水平扩展的系统架构,只有如此才能应对业务容量的持续增长。在这点上,本框架现阶段采用的是微软开源的Orleans和Service Fabric搭配,实现应用程序和物理设备的放缩。当然,涉及数据存储部分时势必也涉及到数据库集群等一系列问题。这些属于技术应用的细节,而非框架理论设计的内容。因此,此处只表明本框架可以基于以上的开源架构进行容量放缩。应用过程中的实际问题,读者可以在后续的项目内容中寻求解答。   轮厂现状当前项目正处于设立初期,主体的体系结构设计与编码仍在进行中,读者可以通过项目地址了解项目的进展:   Github,主要项目源码管理:   Gitee,码云仓库地址:   点击链接QQ交流【Newbe.Claptrap】:   延伸阅读以下这些内容都对本框架产生了深远的影响。读者可以通过阅读以下这些内容,增加对本框架的理解。   基于Actor框架Orleans构建的分布式、事件溯源、事件驱动、终一致性的高性能框架——RayEvent 【重庆会展设计】Sourcing PatternEvent Sourcing Pattern 中文译文Orleans - Distributed Virtual Actor ModelService FabricENode 1.0 - Saga的思想与实现   来源: newbe   文章作者: newbe36524   文章链接:   本文章著作权归作者所有,任何形式的转载都请注明出处。
X

截屏,微信识别二维码

微信号:

(点击微信号复制,添加好友)

打开微信

微信号已复制,请打开微信添加咨询详情!
河北省:石家庄,唐山市,秦皇岛市,邯郸市,邢台市,保定市,张家口市,承德市,沧州市,廊坊市,衡水市,山西省,太原市,大同市,阳泉市,长治市,晋城市,朔州市,忻州市,吕梁市,晋中市,临汾市,运城市,内蒙古自治区,呼和浩特市,包头市,乌海市,赤峰市,呼伦贝尔市,通辽市,乌兰察布市,鄂尔多斯市,巴彦淖尔市,辽宁省,沈阳市,大连市,鞍山市,抚顺市,本溪市,丹东市,锦州市,营口市,阜新市,辽阳市,盘锦市,铁岭市,朝阳市,葫芦岛市,吉林省,长春市,吉林市,四平市,辽源市,通化市,白山市,白城市,松原市,黑龙江省,哈尔滨市,齐齐哈尔市,牡丹江市,佳木斯市,大庆市,伊春市,鸡西市,鹤岗市,双鸭山市,七台河市,绥化市,黑河市,江苏省,南京市无锡市,徐州市,常州市,苏州市,南通市,连云港市,淮安市,盐城市,扬州市,镇江市,泰州市,宿迁市,浙江省,杭州市,宁波市,温州市,绍兴市,湖州市,嘉兴市,金华市,衢州市,台州市,丽水市,舟山市,安徽省,合肥市,芜湖市,蚌埠市,淮南市,马鞍山市,淮北市,铜陵市,安庆市,黄山市,阜阳市,宿州市,滁州市,六安市,宣城市,池州市,亳州市,福建省,福州市,莆田市,泉州市,厦门市,漳州市,龙岩市,三明市,,南平市,宁德市,江西省,南昌市,赣州市,宜春市,吉安市,上饶市,抚州市,九江市,景德镇市,萍乡市,新余市,鹰潭市,山东省,济南市,青岛市,淄博市,枣庄市,东营市,烟台市,潍坊市,济宁市,泰安市,威海市,日照市,滨州市,德州市,聊城市,临沂市,菏泽市,莱芜市,河南省,郑州市,开封市,洛阳市,平顶山市,安阳市,鹤壁市,新乡市,焦作市,濮阳市,许昌市,漯河市,三门峡市,商丘市,周口市,驻马店市,南阳市,信阳市,湖北省,武汉市,黄石市,十堰市,荆州市,宜昌市,襄阳市,鄂州市,荆门市,黄冈市,孝感市,咸宁市,随州市,湖南省,长沙市,株洲市,湘潭市,衡阳市,邵阳市,岳阳市,张家界市,益阳市,常德市,娄底市,郴州市,永州市,怀化市,广东省,广州市,深圳市,珠海市,汕头市,佛山市,韶关市,湛江市,肇庆市,江门市,茂名市,惠州市,梅州市,汕尾市,河源市,阳江市,清远市,东莞市,中山市,潮州市,揭阳市,云浮市,广西,南宁市,柳州市,桂林市,梧州市,北海市,崇左市,来宾市,贺州市玉林市,百色市,河池市,钦州市,防城港市,贵港市,海南省,海口市,三亚市,三沙市,儋州市,四川省,成都市,绵阳市,自贡市,攀枝花市,泸州市,德阳市,广元市,遂宁市,内江市,乐山市,资阳市,宜宾市,南充市,达州市,雅安市,广安市,巴中市,眉山市,贵州省,贵阳市,六盘水市,遵义市,铜仁市,毕节市,安顺市,云南省,昆明市,昭通市,曲靖市,玉溪市,普洱市,保山市,丽江市,临沧市,西藏,拉萨市,日喀则市,昌都市,林芝市,山南市,那曲市,陕西省,西安市,铜川,宝鸡,咸阳,渭南,汉中,安康,商洛市,延安,榆林市,甘肃省,兰州市,嘉峪关市,金昌市,白银市,天水市,酒泉市,张掖市,武威市,定西市,陇南市,平凉市,庆阳市,青海省,西宁市,海东市,宁夏,银川市,石嘴山,吴忠市,固原市,中卫市,新疆,乌鲁木齐,克拉玛依,吐鲁番市,哈密市 益阳密集架 常德密集架 张家界密集架 宜昌密集架 岳阳密集架 恩施密集架 随州密集架 咸宁密集架 黄冈密集架 荆州密集架 孝感密集架 荆门密集架 襄阳密集架 十堰密集架 黄石密集架 北京贷款公司 美陈设计 武汉文件柜 回转轴承 洛阳庆典 洛阳庆典公司 不锈钢柜 南阳焙烤培训 长沙文件柜 洛阳水箱 洛阳水箱 监控台 操作台 南阳蛋糕培训学校 郑州不锈钢柜定制 南宁容声冰箱维修 陶瓷复合管 洛阳变频器维修 三门峡档案整理 洛阳档案整理 焦作档案整理 济源档案整理 三门峡档案整理 南阳档案整理 平顶山档案整理 漯河档案整理 信阳档案整理 开封档案整理 商丘档案整理 济源档案整理 三门峡档案整理 南阳档案整理 平顶山档案整理 漯河档案整理 三门峡档案整理 洛阳档案整理 焦作档案整理 济源档案整理 三门峡档案整理 南阳档案整理 平顶山档案整理 漯河档案整理 重庆展台搭建 psp钢塑复合管 重庆展台设计 济南档案整理 洛阳档案整理 郑州档案整理 南京档案整理 太原档案整理 西安档案整理 合肥档案整理 石家庄档案整理 武汉档案整理 济南档案整理 重庆展台设计