All posts by XM

​案例丨​阳光保险中间件的最佳实践

中间件现状分析_zulu jdk_阳光保险中间件项目

阳光保险中间件项目_zulu jdk_中间件现状分析

阳光财产保险股份有限公司信息技术部总经理  石运福

中间件现状分析

随着云计算、物联网以及大数据技术的发展,传统中间件市场也迎来了新的机遇。近年来全球中间件市场总体发展向好,市场规模稳步提升。目前,中间件市场发展逐步形成如下三类:一是以Oracle和IBM等老牌企业提供的Weblogic和Websphere 等收费的主流商用产品;二是以Tomcat和JBoss为代表的开源免费产品;三是随着国内中间件厂商技术的提升,也涌现出一大批国产厂商赶超者,如宝兰德、东方通、金蝶等提供的国产化中间件产品。各产品的优缺点分析如下。

1. 优点分析。主流商用产品:主流商用产品经过多年的积累和发展,具有良好的品牌影响力,市场占有率高,具备深厚的技术积累。产品功能强大,扩展性强可用性高。开源免费产品:免费开源,社区资源活跃,系统轻量级,消耗资源较少。国产中间件:基本需求都能满足,且功能并不复杂,能提供代码级的服务。国产软件研发在本地,客户支持及服务到位,拥有自主知识产权还能兼顾安全性的考虑。

2. 缺点分析。主流商用产品:普遍存在价格高,服务周期长。无法提供代码级定制化服务。相对开源产品来说,服务较重,系统资源消耗大,对于中小型系统场合不是很合适。开源免费产品:缺少维护和支持,开源中间件的支持服务一般依赖于第三方。系统功能有限,无法满足部分高级需求。国产中间件:大规模商业化案例有限,稳定性还需积累更多实例验证。对于深层次功能的修改以及应用迁移技术方面积累尚不完全成熟。在硬件以及应用的适配上仍有较大优化空间。

阳光保险中间件项目

1. 项目介绍。随着阳光保险互联网化改造的推进,目前已完成业务系统的微服务拆分和容器化改造,需要实现快速的构建和微服务部署,对中间件的选择策略也发生调整,需要综合考虑产品的轻量级、成本以及维护服务等内容。

基于上述背景,阳光保险在2020年3月正式批准立项中间件项目,通过本项目的实施选择适合阳光保险系统架构的中间件产品,同时降低中间件成本,进一步推进互联网化改造进程。

2. 项目实施方案。主要从如下三方面来介绍。

(1)场景描述。目前我司大部分的应用系统,如核心交易系统、办公系统、人力资源管理系统等均使用Java语言开发,大部分应用系统均需运行在中间件上,要求直接替换中间件产品后,应用系统能够平稳运行。对中间件产品的基本要求是必须功能完善、产品运行稳定。需具备以下功能:

需遵循J2EE规范,包括Servlet3.1、JSP 2.3、EJB 3.2、JDBC 4.1、JTA 1.2 等标 准。需支持多操作系统及CPU架构,包括X86芯片,以及国产的龙芯、麒麟、鲲鹏等,操作系统需支持Redhat、CentOS、Windows、中标麒麟Linux、银河麒麟、普华等。需支持多JDK版本,包括Oracle Hotspot JDK,以及Zulu JDK和OpenJDK 等。具备升级和回滚补丁功能。能够快速构建分布式集群。支持IPv6、HTTP/2、HTTPS协议、支持SpringBoot等微服务架构。支持JDBC多数据源,支持JDBC连接池连接数自动调整,JDBC资源池容错。可长时间运行稳定性。支持国密算法,密文传输口令等敏感信息。需具备丰富的文档包括安装手册、用户手册、开发手册等。

(2)实施步骤。由于我司各类系统在建设时所处历史时期和背景不同,所采用的技术框架也不尽相同,为确保中间能够适配各类系统,需要针对不同框架、不同业务逻辑的系统进行测试工作。

测试系统选型:为确保中间件产品未来的高适配性,在组织测试之前需要对各类型应用系统的技术框架、主要业务逻辑、部署方式、网络环境等进行调研。确定系统测试范围,明确测试标准和要求。

中间件产品选型:针对不同中间件产品组织测试工作,主要包括功能性测试、效率测试、可靠性测试、易用性测试和维护性测试。在中间件产品选择上,不宜采用一概而论一刀切的做法,需要根据不同业务系统的需求选择合适其自身特点的产品。

试点运行:对于采用集群部署的业务系统,在部分节点进行中间件产品替换,生产试运行,经受业务高峰期的考验。

生产切换:根据测试和试运行情况,为不同的系统选择适合的中间件产品,最终完成生产环境中间件的替换。

(3)测试内容。功能性测试:结合使用需求和中间件产品的使用手册,对产品的功能进行分类。指标主要包括安装部署、卸载及再安装、启动关闭、数据库连接服务、配置部署、管理工具、应用服务器集群、身份登录和日志审计功能。效率测试 :从响应时间特性和资源占用特性上进行分类细化测试指标项。指标主要包括HTTP协议级和集群性能测试。可靠性测试:从容错性、易恢复性、成熟性等三方面对测试项进行分类。指标主要包括稳定运行测试、网络故障恢复和易恢复性。易用性测试:从易理解、易学性、易操作性等三个方面对测试项进行分类。指标主要包括产品手册、应用示例、安装和卸载、集成环境管理和图形化监控。维护性测试:从易监控性、易维护性等几个方面对测试项进行分类,指标主要包括运行时维护性、JVM堆栈大小配置、垃圾回收配置和运行信息监控能力。

3. 项目进展情况。截止目前,阳光保险已完成集团一个系统、产险三个系统、寿险一个系统,共五个不同框架、不同业务逻辑的系统对四个中间件产品的POC工作,从系统功能、稳定性,可用性,性能等方面全面展开测评工作,在试点过程中暴露的各类问题均已解决并形成知识库,为后续推广积累丰富的经验。

(1)性能测试情况。在POC过程中能对各中间件产品进行了充分的性能测试,以下数据为国内某中间件品牌和目前在用某主流商业产品的平均响应时间随并发数的变化曲线图(见下图)。

中间件现状分析_zulu jdk_阳光保险中间件项目

图 中间件产品平均响应时间随并发数的变化曲线

在同一台服务器上,使用相同配置的国内品牌和目前在用商业产品部署相同的应用,从响应时间来看,国内品牌的响应时间基本是在用商业产品的2倍左右。

(2)功能测试情况。为了确保中间件产品的适配性,本次在功能性测试上,针对不同技术框架的产品进行了充分的测试,同时对某些中间件依赖性较强的产品也进行了充分的测试。在测试过中暴露出很多问题,比如:系统编码的问题,多数据源支持的问题,不同JDK的问题,系统配置问题、日志文件的问题等等。在本次试点过程中,各问题都被逐一解决,最终实现了各业务系统的稳定运行。

(3)稳定性测试情况。在系统稳定性上,国内中间件产品相对主流商业产品也表现不错,前期在业务高峰期的时候虽然出现过一些问题,比如日志锁,内存不稳定等。经过后续的调优设置,均能满足业务系统稳定运行要求。连续运行1个多月均未出现任何异常。

中间件的实践方案

1. 通常替换思路。结合保险行业自身业务特点,需要对中间件从功能、性能、安全以及可扩展性等维度进行逐步验证。通常做法是分阶段进行替换。既贴合基础软件的安全可靠要求,也保障保险业务的平滑运行和迁移过渡。具体阶段如下:

(1)办公类中间件替换。替代前期,主要聚焦在中间件产品的易用性、功能性验证。试点系统的选择上显得尤为重要,应秉持“典型系统”“缩小范围”“成效易见”的原则,采取办公类系统逐个、梯度替换的方式。

(2)非核心业务中间件替换。改造中期,主要聚焦中间件的稳定性、安全性、扩展性验证,建议以非核心类业务系统为迁移对象,并以试运行方式进行稳步替代。

(3)核心类业务集群部署。改造后期,主要聚焦在国产中间件的高并发处理、分布式服务能力、高可用性,建议以核心类业务系统为迁移对象,并以试运行、逐步增加节点的方式进行。

(4)国产中间件云化、容器化改造。伴随着保险行业云计算和微服务架构的发展和应用,云化中间件也将成为行业发展趋势和着力点。在中间件的迁移和改造过程中,最终需综合考虑中间件产品的技术前瞻性,以微服务架构的应用和业务为迁移对象,验证中间件的云平台和容器架构适应性。

2. 阳光保险中间件替换思路。由于目前阳光保险已完成业务系统的微服务拆分和容器化改造,并且已实现核心系统的灰度发布。系统在可用性和可靠性上大大提升,使得阳光保险在中间件的替换进程上有更多的选择和尝试的空间。即使在单节点上出现故障也不会影响系统的整体运行,在替换进程中,可以采取如下策略:

(1)部分节点的替换。替代前期,可以对中间件产品进行全面验证,包括中间件产品的易用性、功能性、稳定性、安全性。在系统选择上,可以选择不同业务逻辑、技术框架和业务压力的系统进行部分节点的试点替换工作。在微服务架构以及灰度发布的背景下,前期可尝试在核心业务系统进行试点替换工作,充分暴露中间件问题,快速积累经验,加快替换进程。

(2)大量节点的替换。替换中期,主要聚焦在中间件的高并发处理、分布式服务能力、高可用性。逐步增加替换节点数量,进行高并发验证,关注迁移前后性能数据,确保各系统的平稳运行。

(3)中间件云化、容器化改造。替换后期,结合阳光云平台,验证中间件的云平台和容器架构适应性,从中间件的轻量部署、弹性伸缩、多数据源管理等维度进行综合验证。最终实现容器化部署。

3. 中间件替换的困难。当前保险公司业务系统种类繁多,不同时期建设的系统在技术框架和部署方式上均不同,业务系统技术复杂度高,中间件适配难度高。对于某些成熟产品,对中间件的依赖较高,在替换中间件后出现的问题也较多。下面就几个典型问题进行分析说明:

(1)历史代码问题。对于某些历史悠久的系统,经历了系统框架的更新换代,在系统中会遗留部分老框架的jar包,导致在适配新中间件时出现个性的问题。另外,在系统中也会存在对中间件进行硬编码配置的地方。此类问题都需要程序去做一些调整,且无法一次性全部排查干净,需要在运行过程中慢慢暴露和解决。

(2)系统编码问题。绝大部分中间件产品都出现了编码问题,不同中间件表现的现象与原因都不一样,同样的系统,在不同中间件上出现的乱码现象也不一样。主要表现为启动报错、页面显示乱码、页面控件乱码等等。处理方法主要为,修改系统代码、修改系统配置文件、修改中间件配置文件等等。此类问题较为分散,需要在出现问题时针对性处理。

(3)产品对中间件依赖较强。目前存在某些产品对中间件的依赖较强的情况,如规则引擎产品。相同功能的规则引擎应用,针对不同版本的中间件以及不同厂商的中间件,提供了不同的应用包。每个应用包都与对应的中间件做了很紧密的绑定。导致规则引擎应用在进行中间件替换时遇到一系列问题。如启服务报错、控制台无法登录等。需要厂商对中间件产品做针对性的调整和配置。对于此类对中间件依赖性较强的产品,在适配过程中往往困难较大,个性调整较多。

(4)性能问题。在进行生产环境试点过程中,面对生产高峰期的压力,部分中间件产品出现了性能问题,比如,请求响应时间开始变长。在本次生产试点过程中,某中间件产品就曾出现过两次请求响应时间变慢的现象,第一次出现在生产经历第一个业务高峰期,第二次出现在运行5个工作日之后。两次的解决方案也不一样,第一次是优化中间件产品的错误日志锁,第二次是调整了JVM参数。由此可见,性能问题需要我们时刻关注,且是一个持续优化的过程。

展望与总结

阳光保险率先在保险行业启动中间件替换试点,目前已完成在不同框架、不同业务逻辑系统上对多家中间件产品的POC工作,率先完成核心业务系统中间件试点工作,完成中间件产品的选型和项目的招标采购工作。在POC过程积累了丰富的实施经验,同时也充分暴露了各类问题,各中间件厂商也在此过程中获得了宝贵的优化建议,从而进一步完善优化中间件产品。

随着近年来云计算和微服务架构的发展与应用,中间件的容器化部署也成为行业趋势和着力点。伴随着阳光保险互联网化进程的推进,依托微服务拆分和容器化改造的成果,使得阳光保险在中间件的替换过程中有了更多的选择和可能性。在对中间件进行全面的测试过程中,某些国产中间件产品的表现也是可圈可点,国产中间件产品已越来越具竞争力,相信未来国产中间件产品能够发展得更快更好。

深天马A:外汇衍生品交易业务管理制度(2024年8月)

天马微电子股份有限公司外汇衍生品交易业务管理制度

(2024年8月修订)第一章 总 则为规范天马微电子股份有限公司(以下简称“公司”)及下属子公司外汇衍生品交易业务及相关信息披露工作,加强对外汇衍生品交易业务的管理,防范投资风险,健全和完善公司外汇衍生品交易业务管理机制,确保公司资产安全,根据《中华人民共和国公司法》、《中华人民共和国证券法》、《深圳证券交易所股票上市规则》、《上市公司信息披露管理办法》及《公司章程》等有关规定,结合公司实际情况,特制定本制度。第一条 本制度所称衍生品是指远期、互换、期权等产品或上述产品的组合。衍生品的基础资产包括汇率、利率、货币;既可采取实物交割,也可采取现金差价结算;既可采用保证金或担保进行杠杆交易,也可采用无担保、无抵押的信用交易。本制度所称外汇衍生品交易是指为满足正常生产经营需要,在银行办理的规避和防范汇率或利率风险的外汇衍生品交易业务,包括远期结售汇、外汇掉期、外汇期权、利率互换、利率期权、结构性远期等。

第二章 外汇衍生品交易业务操作原则第二条 公司进行外汇衍生品交易业务遵循合法、谨慎、安全和有效的原则,不进行单纯以盈利为目的的外汇交易,所有外汇衍生品交易业务均以正常生产经营为基础,以真实的交易背景为依托,以规避和防范汇率风险为目的。第三条 公司开展外汇衍生品交易业务只允许与经国家外汇管理总局和中国人民银行批准、具有外汇衍生品交易业务经营资格的金融机构进行交易,不得与前述金融机构之外的其他组织或个人进行交易。第四条 公司进行外汇衍生品交易必须基于公司的外币收(付)款的谨慎预测,外汇衍生品交易合约的外币金额不得超过外币收(付)款的谨慎预测量。外汇衍生品交易的交割期间需与公司预测的外币回款时间相匹配。

第五条 公司必须以其自身名义或控股子公司名义设立外汇衍生品交易账户,不得使用他人账户进行外汇衍生品交易。第六条 公司须具有与外汇衍生品交易相匹配的自有资金,不得使用募集资金直接或间接进行外汇衍生品交易,且严格按照审议批准的外汇衍生品交易额度,控制资金规模,不得影响公司正常经营。

第三章 外汇衍生品交易业务的审批权限

第七条 公司应分析外汇衍生品交易业务的必要性、可行性及风险控制情况,并报董事会审议。公司应制定外汇衍生品交易业务总体方案和额度,并报董事会审议;独立董事应当发表专项意见。属于下列情形之一的,应当在董事会审议通过后提交股东大会审议:

(一)预计动用的交易保证金和权利金上限(包括为交易而提供的担保物价值、预计占用的金融机构授信额度、为应急措施所预留的保证金等)占公司最近一期经审计净利润的50%以上,且绝对金额超过五百万元人民币。

(二)预计任一交易日持有的最高合约价值占公司最近一期经审计净资产的50%以上,且绝对金额超过五千万元人民币。

第八条 公司开展的外汇衍生品交易业务总体方案和额度需遵循公司章程的相关规定,在公司董事会的经营决策权限内,由董事会审议批准总体方案和额度后实施;如超出公司章程规定的董事会的决策权限,则应提交股东大会审议通过总体方案和额度后方可进行。

第四章 外汇衍生品交易业务执行管理

第九条 公司董事会授权董事长即法定代表人或由其授权相关人员负责外汇衍生品交易业务的具体运作和管理,并负责签署相关协议及文件,负责人需定期向董事会、监事会报告外汇衍生品交易业务情况。

第十条 相关责任部门:

(一)财经管理中心:是外汇衍生品交易业务经办部门,负责外汇衍生品交易业务的计划制订、资金筹集、日常管理。

(二)采购中心及销售相关部门:是外汇衍生品交易业务基础业务协作部门,

负责提供与未来收付汇相关的基础业务信息和交易背景资料。

(三)证券事务办公室:负责外汇衍生品交易业务信息披露工作。

(四)纪检部/内控审计部:对外汇衍生品交易的决策、管理、执行等工作的合规性进行监督检查。第十一条 公司外汇衍生品交易业务的内部操作流程:

(一)财经管理中心负责外汇衍生品交易业务的管理,应加强对货币汇率和与外币借款相关的各种利率变动趋势的研究与判断,提出开展或中止外汇衍生品交易业务的建议方案。

(二)采购中心根据采购订单进行外币付款预测,销售相关部门根据销售订单进行外币收款预测,将相关基础业务信息报送财经管理中心汇总后用于汇率风险防范的分析决策。

(三)财经管理中心以稳健为原则,以防范汇率和利率波动风险为目的,根据货币汇率和与外币银行借款相关的各种利率的变动趋势以及各金融机构报价信息,制订外汇衍生品交易计划,经审批后实施。

(四)财经管理中心根据经过本制度规定的相关程序审批通过的交易计划,结合基础业务信息,选择具体的外汇衍生品,向金融机构提交申请书等业务相关材料。

(五)金融机构根据公司申请,确定外汇衍生品价格,并与公司确认。

(六)财经管理中心收到金融机构发来的外汇衍生品成交通知书后,检查是否与申请书一致,若出现异常,经办人员应核查原因,并将有关情况报告董事长或由其授权的总经理或总会计师。

(七)财经管理中心应建立外汇衍生品交易台账,对每笔交易的委托日期、成交日期、成交金额、成交价格、交割日期等重要信息进行登记,对公司外汇衍生品交易业务的盈亏情况进行关注,并定期向董事长或由其授权的总经理或总会计师报告情况。

第五章 信息隔离措施

第十二条 参与公司外汇衍生品交易业务的所有人员须遵守公司的保密制度,未经允许不得泄露公司的外汇衍生品交易方案、交易情况、结算情况、资金

状况等与公司外汇衍生品交易有关的信息。

第六章 内部风险报告制度及风险处理程序第十三条 在外汇衍生品交易业务操作过程中,财经管理中心应根据在公司董事会或股东大会授权范围及批准额度内与金融机构签署的外汇衍生品交易协议中约定的外汇金额、汇率及交割期间,及时与金融机构进行结算。第十四条 当汇率发生剧烈波动时,财经管理中心应及时进行分析,并将有关信息及时上报董事长或由其授权的总经理或总会计师,董事长或由其授权的总经理或总会计师审慎判断后下达操作指令,防止风险进一步扩大。第十五条 当公司外汇衍生品交易业务存在重大异常情况,并可能出现重大风险时,财经管理中心应及时提交分析报告和解决方案,并随时跟踪业务进展情况;公司应及时商讨应对措施,提出切实可行的解决方案,实现对风险的有效控制,并向董事会汇报。

第七章 外汇衍生品交易业务的信息披露第十六条 公司开展外汇衍生品交易业务在经董事会审议之后,需严格按照相关规定履行信息披露义务,同时以专项公告的形式详细说明外汇衍生品交易业务的具体情况以及必要性和合理性。

第十七条 公司外汇衍生品交易已确认损益及浮动亏损金额每达到公司最近一年经审计的归属于公司股东净利润的10%且绝对金额超过一千万元人民币的,应当及时披露。公司开展套期保值业务的,可以将套期工具与被套期项目价值变动加总后适用前述规定。

第八章 附 则

第十八条 本制度未尽事宜,依照国家有关法律、法规及其他规范性文件的规定执行。本制度如与日后颁布的有关法律、法规、规范性文件的规定相抵触的,按有关法律、法规、规范性文件的规定执行,并由董事会及时修订。

第十九条 本制度经公司董事会审议通过后生效实施。

第二十条 本制度最终修订权和解释权归公司董事会所有。

天马微电子股份有限公司

二〇二四年八月

JAVA 那些事 – 聊聊那些易混淆的概念

本篇博文,跟大家一起回顾下JAVA那些易混淆的概念,包括 JVM/JRE/JDK,openJDK/oracleJDK,以及 JAVA SE/JAVA EE/Jakarta EE。

1 JVM/JRE/JDK

JVM,Java Virtual Machine,即 JAVA 虚拟机,是负责执行 JAVA 程序的。JVM 首先解释 JAVA 编译器编译获得的 bytecode 字节码,然后将类相关信息存储在内存中,最后执行 bytecode 字节码。JVM 有自己的 instruction set 指令集, 并在运行时管理各种内存区域。JVM 包含以下组件:

JRE, Java Runtime Environment,即 JAVA 运行时环境,是一系列运行 JAVA 应用程序所需的软件组件。JRE 包含以下核心组件:

JDK, Java Development Kit,即 JAVA 开发工具包,提供了开发/编译/调试/执行 JAVA 应用程序的环境和工具。JDK 包含以下核心组件:

从上文可以看出,三者之间的关系是:

zulu jdk_openJDK_oracleJDK_comparison_JVM_JRE_JDK_differences

JDK8

zulu jdk_JVM_JRE_JDK_differences_openJDK_oracleJDK_comparison

JDK11

2 常见的各种 JDK builds – openJDK, oracle JDK,Azul Zulu…

zulu jdk_JVM_JRE_JDK_differences_openJDK_oracleJDK_comparison

image

zulu jdk_JVM_JRE_JDK_differences_openJDK_oracleJDK_comparison

image

所以概括起来:

3 JAVA SE, JAVA EE,与 Jakarta EE3.1 JAVA SE

JAVA SE,即 Java Standard Edition, 早期版本称为 J2SE:

3.2 Java EE

Java EE,即 Java Enterprise Edition, 早期版本称为 J2EE:

3.3 Jakarta EE

Jakarta EE,即 Java Enterprise Edition, 早期版本称为 J2EE:

zulu jdk_JVM_JRE_JDK_differences_openJDK_oracleJDK_comparison

image

JVM_JRE_JDK_differences_openJDK_oracleJDK_comparison_zulu jdk

image

openJDK_oracleJDK_comparison_JVM_JRE_JDK_differences_zulu jdk

可以探讨任何IT技术话题和工作上的问题,一起学习共同进步!