欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

说框架设计思路

程序员文章站 2023-02-20 23:19:59
其旨在打造一个集应用开发、大数据存储、处理、分布式计算、自动化部署的无节点微服务集中开发与运行平台,以响应业务的快速变更,满足系统对大数据,大并发与开发效率的需求; 平台设计以数据为核,以groovy脚本为基础,通过提供api、异步消息处理、调度等基础构件来支持应用的快速开发; 核心是通过整合现有开 ......

     其旨在打造一个集应用开发、大数据存储、处理、分布式计算、自动化部署的无节点微服务集中开发与运行平台,以响应业务的快速变更,满足系统对大数据,大并发与开发效率的需求;

        平台设计以数据为核,以groovy脚本为基础,通过提供api、异步消息处理、调度等基础构件来支持应用的快速开发;

        核心是通过整合现有开源项目来实现的,其主要用到的技术栈包括:spring cloud, zookeeper, kafka, elasticsearch, mysql, kudu(hadoop系列), fastdfs,redis, quartz, maxwell, groovy, activitiy,couchdb等。

 

核心概念介绍

项目 - project

其对应一个微服务应用,一个项目定义了一个应用的边界,每个项目有唯一的代码与请求上下文路径,所有资源,接口,调度,通道或触发器都必需归属一个项目,项目与项目之间的调用需要授权。

模块 - module

其对应项目下的一个模块,每个模块可以由一系列的节点组成,方便进行管理。

资源 - resource

资源定义了项目中可以使用的数据库,消息,缓存,文件存储等服务,项目资源只能引用平台上配置的全局资源,在后续的api等脚本中,可以通过资源脚本对象对资源进行操作。

计划支持的资源类型:mysql,oracle,kudu,es(elasticsearch),redis,kafka,filestore,couchdb

外部接口 - restapi

restapi定义了项目对外提供的rest接口;其通过urlmapping来映射外部访问地址,urlmapping为ant表达式,例如:/foo/**或/foo/*/bar

rest接口可以绑定授权,你实现权限验证;rest接口也可以支持mockscript,实现mock;支持通过docapi来指定接口文档。

本地接口 - localapi

本地接口,主要用于在项目内定义一些公共方法,以便其它脚本使用,内部接口可以通过项目脚本对象的call方法来调用,例如:def robj = prj.call('foo', name:'abc');

项目过滤器  - filter

过滤器用于拦截请求,其分为项目filter与全局filter

项目filter只能对当前项目的restapi或filter进行拦截,其通过urlmapping来指定拦截路径。

全局过滤器 - globalfilter

全局filter可以拦截所有项目的restapi或filter进行拦截,项目中如需要配置全局filter必需获得管理员为其配置的“全局filter"定义的授权。

项目通道 - channel

通道主要用于异步处理,其对应一个kafka的topic,在脚本中可以通过prj.sendchannel('foo', 'valuestr')的方式触发channel脚本的执行。

channel默认是有序单队列的,如果需要支持无序并发处理,请将配置的hostnum设置大于1,考虑到资源占用,暂时最高不能大于100。

全局通道 - publicchannel

全局通道主要用于向其它项目广播,例如在产品主数据修改后,联采,交易,结算等都需要同步数据。

其它项目如需要监听当前通道,需要通过allowpullprojects为其它项目授权,其它项目可以使用publicreciver来监听其它项目的广播。

其它项目如需要发送数据到当前通道,可以通过prj.sendpublicchannel('project', 'channelname', 'valuestr')来实现,同时当前通道需要设置allowpushprojects来授权。

全局消息处理器  - publicreciver

用于接收全局广播,其对应publicchannel

触发器 - trigger

监听数据库的变动,当前只支持mysql;

调度 - schedule

用于定义项目中的调度,通过定义cron表达式来指定执行周期。

es数据集 - dataset

用于定义elasticsearch的索引库,其可以通过copyfromtable来同步某个数据库表的结构;

dataset变更后需要重建索引才会生效。

数据库表 - table

用于定义数据库资源中的表。

数据初始化 - datainit

用于定义数据库资源中的初始化数据。

 

——————————————

推荐阅读:

kafka 入门教程

你可以不懂但一定要知道的代码审查 code review

elk stack 实战教程

filebeat+kafka+strom+logstash+es 舆情采集系统

安全漏洞扫描,风险原因分析及解决方案