• Action模型:读未提交的并发性能,可串行化的隔离效果,一个具有创新性的Java中间件
    Action模型概述Action模型系本人基于Java语言研发的一套中间件。作为一个中间件,其在理论上的最大亮点在于:在Action模型提供的可串行化(Serializable)这一事务隔离级别下,可以达到读未提交(Read Uncommitted)这一事务隔离级别的并发性能(这就要求位于Action模型之下的DBMS仅提供读未提交的事务隔离级别即可)。事实上,Action模型向上层(即业务层)总共提供三种事务隔离级别:可串行化、混合可串行化(此隔离级别属于本人自创)、严格可串行化(Strict Serializable)。也就是说,Action模型最低的事务隔离级别就是可串行化,并且在此事务隔离级别下可以达成读未提交一级的并发性能。这就真正达成了一种鱼和熊掌可以得兼的效果。Action模型在实践上的最大亮点在于如下三点:- 无需考虑并发的并发模型(Concurrency);- 无需时间输入的时间模型(Time);- N元关联也支持Qualifier的关联模型(Association)。并且以上所有亮点都是以免程序员的方式实现。应用Action模型的步骤如下:- 应用一个增强型UML模型编辑器(注意这里不是传统的UML,而是经过扩展后的增强型UML,传统的UML由于在这一方面的表达能力不足,因此无法但此重任)进行建模;- 将建好的模型自动输出为XML文件;- 应用代码自动生成器,以上一步的XML文件作为输入,自动生成完整的中间层代码API(也包含SQL代码);当Action模型的代码生成完毕之后,有三种应用途径:- 由程序员进行业务代码的编写工作;- 由低代码/无代码平台构建业务代码;- 由AIGC生成业务代码。无论那一种途径,只要在业务代码中调用前面生成的中间层代码API,就可以使得开发的系统自动具有上面所描述的几个特征,例如,无需考虑并发、无需考虑时间输入、无需考虑低级别事务隔离级别所带来的种种缺点、等等。我之所以能够一个人进行Action模型的研发,代码自动生成技术(其属于MDA,即模型驱动架构,的一部分)起了非常关键的作用。否则,仅凭我一人之力,单单是百分之百正确率的敲代码的工作量就是一项个人难以完成的任务。Action模型既非来自开源软件,自身也未开源,属于本人自创的一套软件体系。目前已经适配MySQL和MSSQL。Action模型的一个重要特性是支持强一致性(即读操作一定能够读取到在其之前最近的写操作所写入的数据),单机版本的Action模型对此没有任何问题,一主多从版本的Action模型对此也没有任何问题。Action模型的另一个重要特性是原生地具有防篡改的特性。只要位于其下的DBMS能够保证无法直接对数据库表文件进行篡改,就可以保证应用Action模型的系统无法对系统中的任何数据进行篡改。当前流行的微服务架构比较适合高并发和简单业务场景的系统,而Action模型则适合于中高并发和复杂业务场景的系统。因此微服务架构比较适合于电商等应用,而Action模型则比较适合于金融、ERP、OA等企业级应用。Action模型与当前比较流行的低代码/无代码开发平台的侧重点各不相同:Action模型因为是一个中间件,因此侧重于后台底层代码的自动生成,而当前的低代码/无代码开发平台最弱的地方就在于这一部分。因此Action模型如果与当前的低代码/无代码开发平台进行结合,将可以产生相得益彰的效果。当然,如果不与当前的低代码/无代码开发平台相结合,则也可以直接利用Action模型进行业务系统的开发,只是现在业务代码的开发需要程序员来完成而已。Action模型与当前大热的AIGC之间的关系:由于Action模型在中间层就提供了并发、时间、关联的支持,因此可以大大降低AIGC生成代码的难度,因为现在AIGC仅需考虑业务逻辑,即专注于业务代码的生成。就以并发为例,如果没有Action模型,如果你对AIGC说基于中间层提供的API生成业务代码,并加上考虑并发和不考虑并发这两个选项,则不考虑并发所生成的代码的质量和考虑并发所生成的代码的质量是截然不同的。这个大家在最近国内比较热的大模型Kimi上试试看就知道了。众所周知,芯片的生产包含制造、封装和测试这三大步骤,如果我们将Action模型比作一个芯片,则目前为止其核心模块的制造过程已经基本完成,就剩下封装和测试这两大步骤还需完善。这里所谓的封装即是Action模型与各种框架的集成。开始时我使用的框架是Struts2,但是目前已经转到Spring Boot,转到后者的主要原因是其比较简洁,这样就可以使开发的工作量主要用在Action模型上。最早的代码开发环境和测试环境如下:Windows + JDK8 + EclipseSDK + MSSql2012Dev + Struts2 + Tomcat和JBoss/Wildfly;后来新增的代码开发和测试环境如下:Ubuntu + OpenJDK17 + Eclipse202303 + MySql + Spring Boot + Tomcat;这里所谓的测试就是软件测试。我已经针对Action模型进行了一些测试,不过由于人力所限,虽然通过这些测试发现了不少的Bug,也解决了这些Bug,但是仍旧可能会存在一些Bug。可以通过编写大量应用Action模型的实例的办法对Action模型进行进一步的测试,而这是单靠我一个人无法完成的。这就意味着,实现Action模型的三个环节中难度最大,重要性最高的制造环节已经完成,再往后就是工作量的问题。实际上,在我编写的一个测试用例中,同时开450个Runnable链(可以将1个Runnable链视为1个事务),其中共有三种类型的长短事务,每种150个,并且将其运行在一台只有16线程CPU的笔记本上,可以确保这其中既不会有死锁,也不会有数据竞争发生,这里的技术含量就无需赘述了。以Action模型为核心的一系列技术基本上都由本人独立研发而成,本人承担了百分之九十九的工作量,并具有百分之一百的知识产权,因此完全可以采用双方都认可的任何方式进行合作。如果对这套中间件感兴趣的话,我还可以提供更详细的资料,并且可以到贵处进行现场演示和交流。
  • [技术干货] Web中间件简介
    什么是Web中间件?随着互联网的快速发展,Web应用变得越来越复杂,从简单的静态页面到动态的、交互式的、大数据量的应用程序。在这样的背景下,如何确保Web应用的性能、安全性和可扩展性成为了开发者和运维人员面临的重要挑战。而Web中间件正是解决这些问题的关键所在。Web中间件,也被称为Web中间件软件或中间件组件,是位于客户端和服务器之间的软件层。它扮演着“桥梁”的角色,负责处理来自客户端的请求,然后将其传递给服务器,再将服务器的响应返回给客户端。中间件不仅仅是一个简单的传递者,它还提供了许多额外的功能,如负载均衡、缓存、身份验证、日志记录等。Web中间件的作用性能优化:Web中间件能够缓存静态资源,如HTML、CSS、JavaScript文件,以及图片、视频等,减少服务器的压力,提高应用的响应速度。同时,通过负载均衡技术,可以将请求分发到多个服务器上,进一步提高系统的整体性能。安全性增强:中间件可以实施各种安全策略,如身份验证、访问控制、加密传输等,保护应用免受攻击。此外,中间件还可以检测和过滤恶意请求,防止SQL注入、跨站脚本攻击(XSS)等常见的Web安全漏洞。可扩展性和可维护性:Web中间件允许开发者将应用划分为多个独立的模块,每个模块负责处理特定的功能。这种模块化的设计使得应用更容易扩展和维护。同时,中间件还提供了统一的接口和规范,使得不同模块之间的交互更加简单和标准化。日志记录和监控:中间件可以记录所有的请求和响应信息,帮助开发者了解应用的运行情况,及时发现和解决问题。此外,通过监控工具,还可以实时监控应用的性能指标,如响应时间、吞吐量、错误率等,确保应用始终处于最佳状态。常见的Web中间件Nginx:Nginx是一款高性能的HTTP和反向代理服务器,也是一款IMAP/POP3/SMTP代理服务器。它以其稳定性、丰富的功能集、低资源消耗而闻名。Nginx可以作为静态网页和反向代理服务器使用,还支持负载均衡和SSL加密等功能。Apache:Apache是全球使用最广泛的Web服务器软件之一。它提供了丰富的模块和功能,如访问控制、身份验证、URL重写等。同时,Apache还具有良好的可扩展性和可定制性,能够满足各种复杂的应用需求。IIS(Internet Information Services):IIS是微软公司提供的一款Web服务器和应用程序平台。它支持ASP.NET、ASP、PHP等多种编程语言和框架,并提供了丰富的管理工具和功能,如Web部署、性能监控等。总结Web中间件在现代Web应用中发挥着至关重要的作用。它不仅能够提高应用的性能和安全性,还能增强应用的可扩展性和可维护性。随着技术的不断发展,我们相信未来会有更多功能强大、性能卓越的中间件产品出现,为Web应用的发展提供更强有力的支持。
  • [问题求助] 坐席话机联动
    【问题来源】天安人寿【问题简要】坐席话机联动【问题类别】坐席话机联动【AICC解决方案版本】  AICC23.200【期望解决时间】【尽快】【问题现象描述】 第三方需要实现有电话呼入时,直接点话务条上的接听按钮来实现此通电话的应答。