技术服务于业务,良好的技术设计和实现能够大幅提升业务质量和效率. PowerDotNet已经形成了自己的开发风格,很多项目已被应用于生产环境,可行性可用性可靠性都得到了生产环境验证. 编程是非常讲究动手实践的科目,我们发明的框架.工具和方法论,如果自己都没有做出有说服力的产品,没有得到充分验证,如何说服别人使用呢? 眼看千遍,嘴说万遍,不如亲自动手实现一遍. 从本文开始,将会介绍几种像第一篇基础数据平台一样,个人开发过的公共服务中更偏重于业务的公共服务系统,没错,某些业务系统也能成为全局通用的公…
几乎所有后端应用都会或多或少用到缓存,尤其是分布式缓存服务,以及和本地缓存构造的二级缓存.根据我们一贯的节约代码的风格,为了复用的目标,抽象出缓存平台,进行缓存管理. 考虑到很多公司都会自己造或者直接拿来主义使用各种各样的开源缓存轮子,本文介绍的就简单一点,介绍下主要思路和实现思想就行,灭哈哈. 环境准备 1.(必须).Net Framework4.5+ 2.(必须)关系型数据库MySQL或SqlServer或PostgreSQL或MariaDB四选一 3.(必须)PowerDotNet数据库管…
所有后端应用几乎都会记录日志,日志系统可以统一抽象出来提供服务. 最近被Log4j2的安全漏洞刷屏了,作为开发人员的我只能咩哈哈几次表示日志处理太难了,只有折腾过的人才知道这里面的艰辛啊. 在实现PowerDotNet日志系统之前,参考调研了Flume.ELK.Scribe和kafka的日志解决方案,对比后最终选择Facebook的日志系统Scribe作为目标,实现了基于thrift协议(当然也支持http协议)无锁且异步的更高性能简洁而稳定的可扩展日志系统Power.XLogger. 本文讲讲…
定时任务是后端系统开发中少不了的一个基本必备技能. 传统的实现定时任务的方式有很多种,比如直接使用操作系统的Timer和TaskSchedule,或者基于Quartz.HangFire.xxl-job.es-job等优秀开源任务调度框架. PowerDotNet在借鉴现有任务调度框架Quartz的基础上,配合PowerDotNet自研的服务治理平台,加以改进和优化,实现了一套非常易用的任务调度平台系统. 接入PowerDotNet的定时任务调度平台,开发人员只要专注开发API接口,然后点点按钮配…
上文介绍定时任务调度平台的时候提到,定时任务调度平台的类模式一般用于处理耗时较长的任务.但是根据经验,有些耗时较长的任务,可以通过简化业务逻辑.分页.批量多次处理,改造为耗时较小的适合使用RESTful接口模式的定时任务.有一类数据同步结转非常耗时的任务,耗时多少完全看数据量,这类数据处理任务的解决方案,就是本文要介绍的基于DataX实现数据同步功能. DataX是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.PostgreSQL.HD…
消息队列已经几乎成为大中型高吞吐应用的标配,继续根据我们一贯的节约代码的风格,为了复用的目标,抽象出消息队列平台,进行消息队列管理. 环境准备 1.(必须).Net Framework4.5+ 2.(必须)关系型数据库MySQL或SqlServer或PostgreSQL或MariaDB四选一 3.(必须)PowerDotNet数据库管理平台,主要使用DBKey功能 4.(必须)PowerDotNet配置中心Power.ConfigCenter 5.(必须)PowerDotNet注册中心Power…
很多业务系统少不了需要进行文件管理,比如各种图片.excel.pdf.压缩包等等,为了高度可复用,我们抽象出文件平台,加强对文件进行管理. PowerDotNet文件平台目前支持阿里云OSS.FastDFS和本地文件服务器三种上传存储类型. 根据我前面文章介绍数据库.缓存.队列等公共服务平台的一贯风格,文件平台也是只要在管理后台点一点,引入公共服务文件上传必要组件,一个应用就可以轻松实现文件管理主要功能,包括(同步或异步)上传.查看.删除.定时自动上传等. 在PowerDotNet中,目前文件平…
为了复用和解耦,快速开发更多的系统和应用,我们对自己经常说的"系统"和"应用"进行更高级的提取和抽象. 十多年前入行,辗转至今,写过很多很多应用,个人喜欢分门别类整理知识,也看到有些公司这样管理应用(照猫画虎还是挺容易的),所以有个趁手的系统应用管理平台就是顺理成章的事情.现在PowerDotNet就把我自己所理解的系统应用平台最基础最核心的功能做出来,迭代几次后比初始版本加了不少扩展,给系统应用良好运维和管理打下基础. 一.系统 不同的业务部门,我们可以抽象为一个…
本系列我将主要通过图片和少许文字讲解通过个人自研的PowerDotNet进行快速开发平台化软件产品. PowerDotNet不仅仅是包含像Newtonsoft.Json.Dapper.Quartz.Redis.ZooKeeper.ElasticSearch.ETCD.Autofac.JWT.MyBatis.EF.RabbitMQ.ObjectPool.Hessian.Thrift.gRPC.SuperSocket等流行的类库和组件,像ABP.SpringBoot之类的开发框架套件和工具,它还是一…
为了DB复用和简化管理,我们对常见应用依赖的DB模块进行更高级的提取和抽象. 虽然一些ORM可以简化DB开发,但是我们还是需要进行改进和优化,否则应用越多,后期管理运维越混乱. 根据常见开发需要,数据库连接串.数据库元数据管理基本上是合格的开发人员必须要用到的功能. 一.数据库连接 数据库连接串管理起来不难,但是写法随意可能造成编程开发的混乱. 通常我们写的应用程序,如果要访问数据库,除了调用远程API服务,基本都会配置一个或多个数据库连接串,有数据库密码安全需要的还需要配置安全模块.随着应用增…
ETCD目前在PowerDotNet已经被用于注册中心和配置管理(常见的配置中心在PowerDotNet中仅仅是一个小小的模块而已)中,作为基础设施的重要组成部分,ETCD的重要性不言而喻. 本文简单总结介绍下个人开发使用和管理ETCD的一些经验. ETCD诞生于CoreOS公司,它最初是用于解决集群管理系统中OS升级的分布式并发控制以及配置文件的存储与分发等问题. 按照官方解释(A distributed, reliable key-value store for the most criti…
本文再写一篇和具体业务逻辑几乎无关的公共服务应用监控平台.PowerDotNet自研的应用监控平台系统,是服务治理的重要拼图,和服务治理平台配合使用效果更好. 监控开源产品非常丰富,站在巨人的肩膀上,PowerDotNet自研的监控平台,除了基本的监控功能,还可以通过加一层代理,将应用接入开源监控软件,降低应用和监控软件的耦合. 在介绍系统和应用的时候,我们说过应用的一种分法是可以分为带界面的和不带界面的,服务或者非服务等等等等,拆分方法不同,关注的应用形态也就不同. 带界面的应用比较容易肉眼看…
系统和系统之间,少不了数据的互联互通.随着微服务的流行,一个系统内的不同应用进行互联互通也是常态. PowerDotNet的服务治理平台发源于早期的个人项目Power.Apix.这个项目借鉴了工作过的公司的服务治理方案,站在巨人的肩膀上,一步一步从无到有模仿设计和实现. 一开始,Power.Apix被设计用于基于XML的Web服务通信,因为Web服务在当时是主流通信方式,朴素版本大概长下面这个样子: 服务端: 服务端只要加上ApixClazz.ApixMethod两个特性,一个Apix服务就完美…
部标gps监控平台的架构,随着平台接入的车辆越来越多,架构也面临越来越大的负载挑战,我们当然希望软件尽可能的优化并能够接入更多的车辆,减少在硬件上的投资.但是当车辆增多到某一个临界点的时候,仍然要面临的三个问题: 1)连接的限制 服务器软件接入终端的连接数是有限的,无论如何优化,都是有限的,接入的增多就会排队,超时timeout重置reset等问题就会出现; 2)部标808服务器软件的内存限制的问题 内存的限制,服务器操作系统中一个进程所承受的内存是有限制的,超过则导致服务器软件进程内存溢出而退…
部标GPS软件平台之百度地图设计 地图是客户端中不可缺少的一个模块,很多人在设计和画图时候,喜欢加上地图引擎这样高大上的字眼,显得自己的平台有内涵,说白了就是用第三方的SDK来开发,早期的GPS监 控软件用的都是mapx.mapxtrem.acrgis之类的,使用的都是本地地图.不仅要购买正版地图,还要购买价格不菲的地图引擎license,服务器版的部署的时候,还要绑定到服务器ID上,现在这种开发方式已被抛弃.现在的百度地图.谷歌地图提供的SDK接口丰富,开发方便,系统稳定,大家都用的很爽. 在…
美团外卖平台化复用主要是指多端代码复用,正如美团外卖iOS多端复用的推动.支撑与思考文章所述,多端包含有两层意思:其一是相同业务的多入口,指美团外卖业务需要在美团外卖App(下文简称外卖App)和美团App外卖频道(下文简称外卖频道)同时上线:其二是指平台上各个业务线,美团外卖不同业务线都依赖外卖基础服务,比如登陆.定位等.多入口及多业务线给美团外卖平台化复用带来了巨大的挑战,本文将在美团外卖Android平台化架构演进实践文中“代码复用”章节的基础上,进一步详细地介绍平台化复用工作面临的挑战以…
通用权限案例平台在经过几年的实际项目使用,并取得了不错的用户好评.在平台开发完成后,特抽空总结一下平台知识,请各位在以后的时间里,关注博客的更新. 1.EASYUI+MVC4通用权限管理平台--前言 2.通用权限管理平台--架构选型 3.通用权限管理平台--数据模型定义 4.通用权限管理平台--功能划分 5.通用权限管理平台--代码结构 6.通用权限管理平台--登录认证 7.通用权限管理平台--日志功能 8.通用权限管理平台权限控制--站点地图 9.通用权限管理平台权限控制--综合查询插件 10…
原文地址:http://www.cnblogs.com/hn731/archive/2013/07/15/3190947.html 通用权限案例平台在经过几年的实际项目使用,并取得了不错的用户好评.在平台开发完成后,特抽空总结一下平台知识,请各位在以后的时间里,关注博客的更新. 1.EASYUI+MVC4通用权限管理平台--前言 2.通用权限管理平台--架构选型 3.通用权限管理平台--数据模型定义 4.通用权限管理平台--功能划分 5.通用权限管理平台--代码结构 6.通用权限管理平台--登录…
一.容器云的背景 伴随着微服务的架构的普及,结合开源的Dubbo和Spring Cloud等微服务框架,宜信内部很多业务线逐渐了从原来的单体架构逐渐转移到微服务架构.应用从有状态到无状态,具体来说将业务状态数据如:会话.用户数据等存储到中间件中服务中. 微服务的拆分虽然将每个服务的复杂度降低,但服务实例的数目却呈现出爆炸式增长,这给运维增加难度,一方面是服务部署.升级,另一方面是服务的监控故障恢复等. 在2016年,容器技术尤其是Docker迅速流行起来,公司内部开始尝试将容器放到容器内运行,虽…
​ 一.分析目的 通过分析2B产品中的团队协作管理软件的对比分析,用于为公司团队协作软件的选型做产考. 二.竞品归属市场概况 2.1.目标用户群及需求 主要面向企业用户,用于解决企业不同地域以及不同职能部门之间的团队协作难点. 2.2.市场规模 中国大概有4000万+企业,如采用人均年费制,均价200+/人/年,按平均一个企业或团队最少10人算,市场规模可在千亿左右.因此如果能培养行业使用习惯,市场价值可观. 2.3.针对笔者所在团队的需求详细分析如下: 1.需求管理:能够对需求池进行管理. 2…
ASP.NET Core会议管理平台实战 课程地址:https://ke.qq.com/course/389673?from=800004097#term_id=100464670 ASP.NET Core会议管理平台实战_1.开篇介绍 ASP.NET Core会议管理平台实战_2.基本概念的理解 ASP.NET Core会议管理平台实战_3.认证.授权表迁移 ASP.NET Core会议管理平台实战_4.参数校验.操作结果封装,注册参数配置…
一.分析目的 通过分析2B产品中的团队协作管理软件的对比分析,用于为公司团队协作软件的选型做产考. 二.竞品归属市场概况 2.1.目标用户群及需求 主要面向企业用户,用于解决企业不同地域以及不同职能部门之间的团队协作难点. 2.2.市场规模 中国大概有4000万+企业,如采用人均年费制,均价200+/人/年,按平均一个企业或团队最少10人算,市场规模可在千亿左右.因此如果能培养行业使用习惯,市场价值可观. 2.3.针对笔者所在团队的需求详细分析如下: 1.需求管理:能够对需求池进行管理. 2.迭…
爬虫管理平台以及wordpress本地搭建 学习目标: 各爬虫管理平台了解 scrapydweb gerapy crawlab 各爬虫管理平台的本地搭建 Windows下的wordpress搭建 爬虫管理平台了解: scrapydweb: 用于Scrapyd实施管理的web应用程序,支持Scrapy日志分析和可视化 github地址:https://github.com/my8100/scrapydweb.git gerapy: 基于Scrapy,Scrapyd,Scrapyd-Client,S…
ShareERP 2013-09-03 ERP业务平台化是每个软件提供商必须要进行的趋势,传统定制化路线已死,不能走定制化的老路了.以往最大问的题是不能累积和沉淀技术及提升项目业务管理能力,其次是管理与成本很高.关于平台化设计的文章很多,不在一一列举,具体来分析一下实现平台化的技术,因为介绍实际的软件架构技术的文章实在太少. ERP平台化设计基本要素: 1. 业务模块设计(基础平台,以运行业务): 业务模块是业务流程运行的基础,系统在设计前期应先规划业务模块架构体系,就笔者的所设计的系统为例:…
在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的增多,平台已经臃肿不堪. 设计基于.NET的GPS部标平台,我们坚定不移的选择了基于JQUERY+Asp.NET MVC来作为前端交互和后台处理的框架.选用一个灵活的脚手架,同时团队又能掌握这个脚手架为团队所用. 对于一个web应用项目,基于MVC的框架,前面文章提到过,最大的优点就是结构清晰,强制…
在设计的前夕,设计人员喜欢把领导对未来业务的期望带入到设计目标当中,比如当前业务也不过是接入几千辆车,未来业务增长也不过几万台,但领导很多激情,强势要求二期平台的接入能力要达到20万台,这个要求带入到架构设计当中,很多人立即崩溃了,在设计的时候,意淫出很多奇妙的东西,很复杂的数据库结构或者库表,在设计的初期就早早的确立一些框架如MQ,Memcached,Ehcache等等,在后来的实际运行过程中,由于不熟悉,起到反面的作用,性能差,bug多. 要知道设计和实现,是不同的人或团队在做,如果设计的思…
流程设计 图形化的流程设计,更方便.直观 1.打开“流程设计“程序,如上.点击”新建“如下: 2.红色部分为必填项,审批对象是选择要审批的程序菜单,单据名称是在审核流流转时用于提示的单据名称,还要选择审核的数据表和审核状态字段.当维护完成后进行“确定“保存.再点击 进行图形化设计审核流. 3.从左边拖拽审核节点和连接线. 4.双击节点 ,设计节点此节点的名称.审核人.投票比例等. 注:可以选择多人再结合投票设置可以达到会审需求. 5.双击连接线可以配置走此分支需要具备的条件.如果业务人员可以用鼠…
大多数的程序代码是必要的时,它可以被加载到内存中运行.手术后,可直接丢弃或覆盖其它代码. 我们PC然在同一时间大量的应用,地址空间差点儿能够整个线性地址空间(除了部分留给操作系统或者预留它用).能够觉得每一个应用程序都独占了整个虚拟地址空间(字长是32的CPU是4G的虚拟地址空间).但我们的物理内存仅仅是1G或者2G. 即多个应用程序在同一时候竞争使用这块物理内存.其必定会导致某个时刻仅仅存在程序的某个片段在运行,也即是全部程序代码和数据分时复用物理内存空间-这就是内存管理单元(MMU)工作核心…
大多数的程序代码是必要的时,它可以被加载到内存中运行.手术后,可直接丢弃或覆盖其他代码.我们PC然在同一时间大量的应用,能够整个线性地址空间(除了部分留给操作系统或者预留它用),能够觉得每一个应用程序都独占了整个虚拟地址空间(字长是32的CPU是4G的虚拟地址空间),但我们的物理内存仅仅是1G或者2G.即多个应用程序在同一时候竞争使用这块物理内存.其必定会导致某个时刻仅仅存在程序的某个片段在运行,也即是全部程序代码和数据分时复用物理内存空间-这就是内存管理单元(MMU)工作核心作用所在. 处理器…
LESS.SASS等预处理器给CSS开发带来了语法的灵活和便利,其本身却没有给我们带来结构化设计思维.很少有人讨论CSS的架构设计,而很多框架本身,如Bootstrap确实有架构设计思维作为根基. 要理解这些框架,高效使用这些框架,甚至最后实现自己的框架,必须要了解结构化CSS设计思想. 我不是前端专家,但是我想,是否一定要等成为了专家才能布道?那是不是太晚了. 所以我是作为一个CSS的学习者,给其他CSS学习者分享一下结构化CSS设计的学习心得. 我更多的是一个后端开发者,后端开发的成熟思想必…