为了复用和解耦,快速开发更多的系统和应用,我们对自己经常说的"系统"和"应用"进行更高级的提取和抽象. 十多年前入行,辗转至今,写过很多很多应用,个人喜欢分门别类整理知识,也看到有些公司这样管理应用(照猫画虎还是挺容易的),所以有个趁手的系统应用管理平台就是顺理成章的事情.现在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自研的监控平台,除了基本的监控功能,还可以通过加一层代理,将应用接入开源监控软件,降低应用和监控软件的耦合. 在介绍系统和应用的时候,我们说过应用的一种分法是可以分为带界面的和不带界面的,服务或者非服务等等等等,拆分方法不同,关注的应用形态也就不同. 带界面的应用比较容易肉眼看…
系统和系统之间,少不了数据的互联互通.随着微服务的流行,一个系统内的不同应用进行互联互通也是常态. PowerDotNet的服务治理平台发源于早期的个人项目Power.Apix.这个项目借鉴了工作过的公司的服务治理方案,站在巨人的肩膀上,一步一步从无到有模仿设计和实现. 一开始,Power.Apix被设计用于基于XML的Web服务通信,因为Web服务在当时是主流通信方式,朴素版本大概长下面这个样子: 服务端: 服务端只要加上ApixClazz.ApixMethod两个特性,一个Apix服务就完美…
几乎所有后端应用都会或多或少用到缓存,尤其是分布式缓存服务,以及和本地缓存构造的二级缓存.根据我们一贯的节约代码的风格,为了复用的目标,抽象出缓存平台,进行缓存管理. 考虑到很多公司都会自己造或者直接拿来主义使用各种各样的开源缓存轮子,本文介绍的就简单一点,介绍下主要思路和实现思想就行,灭哈哈. 环境准备 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接口,然后点点按钮配…