Dataturks-hope 代码结构

hope项目分两部分:

1.bonsai       与前端交互&&数据库操作

2.dataturks    网站后台主要逻辑实现部分,Controlcenter.java封装了很多数据处理操作

 

1.入口: 

bonsai\dropwizard\core\MainApp.java

主要在run()方法,application初始化,配置参数初始化,数据库Dao类初始化,

 

2.API接口:

 /resources/DataturksAPIEndPoint.java 

 DT annotations platform API access

 /resources/DataturksEndpoint.java     

 DT annotations platform 

这两个文件中定义所有后端与前端通信接口,如新增用户,删除project,上传下载请求

根据url返回包含对应页面数据的response

 

3.前端请求的数据封装 

dataturks/response包

response包内定义,页面请求封装的数据,返回给前端   如 UserDetails UserHome为用户home页面提供数据

 

4.数据库操作封装

bonsai.dropwizard.dao

mysql操作封装,各张表数据的封装,如DUsers,DProjects,DSubscriptions

 

5.数据处理中心

Controlcenter.java

数据操作的实现类,大部分数据处理在此实现,如新用户注册,删除project,为project增删用户,文件上传下载操作....

 

6.工程概览

每个package主要模块介绍:

config:App配置    DBBasedConfigs存储在DB中的配置,比如上传路径

DB:只有一个Refresher.java封装数据库操作

dropwizerd:包含   /core/MainApp.java   主入口

                     DAO类

                     /resources/DataturksAPIEndPoint.java   DT annotations platform API access

                     /resources/DataturksEndpoint.java     

                     DT annotations platform  定义所有后端与前端通信接口,根据url返回包含对应页面数据的response

 

email:给用户发邮件,提醒标注任务

exceptions:异常类,目前只有 AuthException.java

sa:事件日志记录相关 

security:LoginAuth.java用户登录验证相关  firebase等

utils:上传工具,json转换,变量类型转换

bonsai/Constants.java   定义一些常量,比如最大文件上传限制

 

7.数据库-表定义

configs  持久化存储项目配置

d_api_keys  用户有效性验证

d_hits  存储待标记文件

    Data字段存储本地文件名,使用时和配置的存储路径拼接;或者存储为网络url,一般在云存储上

d_hits_result 存储已标记文件

    1.标注框用json存储,矩形也存储四个点坐标,有冗余是为了兼容多边形标注框。

[{

"label": ["face"],

"shape": "rectangle",

"points": [

  [0.7173295454545454, 0.027659574468085105],

  [0.7173295454545454, 0.2148936170212766],

  [0.7926136363636364, 0.027659574468085105],

  [0.7926136363636364, 0.2148936170212766]

],

"notes": "",

"imageWidth": 960,

"imageHeight": 640

},...]

    2. Shape存储标注框类型,有rectanglepolygon,该字段为空则表示图片分类的label。

d_org_users  机构-用户列表

d_orgs  机构列表

d_projects   一个标注项目,分多种类型(type)

d_subscription_plans   用户订阅

d_users   用户

keyValues   todo 未初始化

 

8.上传文件

1.DataturksEndpoint.java      public UploadResponse fileUpload()

2. DataturksEndpoint.java      public static UploadResponse handleFileUpload()

3.Controlcenter.handleFileUpload(reqObj, projectId, uploadedFile);

 

\dataturks\DataStorageHandler.java
单张图片上传文件缓存至  /tmp/xxxx.png   on-prem模式存至本地/home/dataturks/bazaar/uploads   否则存至亚马逊aws

 

 

补充:

Dropwizard简介

Dropwizard的历史要早于Spring Boot最早是在2011.12发布的v0.1.0版本,Dropwizard是Coda Hale在Yammer公司时创立的,它旨在提升公司分布式系统的架构(现在叫:微服务)。它的目标是作为轻量化、为生产环境准备且容易使用的web框架。

Dropwizard与Spring Boot类似,也是构建微服务可选的工具,但是它显得比Spring Boot更加规范一些。它使用的组件一般不会做可选替换,而好处是可以不需要那么多的修饰,比如写基于REST的web服务。
比方说,Dropwizard选择使用Jetty作为Servlet容器,REST库使用Jersey,序列化和反序列化使用了Jackson,而想将其中的Jetty替换成Undertow就没有那么容易。

就像Spring Boot一样,Dropwizard推荐将整个工程打包成一个可执行的jar,通过这种方式开发人员不用在担心程序运行的应用服务器是什么,需要什么额外的配置,应用再也不需要被构建成war包了,而且也不会有那么多复杂层级的类加载器了。
Dropwizard中的类加载也是扁平结构的,它和我们常用的应用服务器不一样,应用服务器往往具备多层级如同图一般的类加载器,这会涉及到类加载器的优先级,而这些在不同的应用服务器的实现上都是大相径庭的。

运行在独立进程中的Dropwizard实例也便于进行各自的JVM调优和监控,因为运行在应用服务器上的多个应用,很可能由于一个应用导致的GC或者内存溢出,进而导致整个应用服务器的崩溃,毕竟它们是在同一个进程中。
 

DropWizerd项目执行逻辑分析

1). HelloWorldApplication   -->   main()   -->   initialize()   -->   getName()

先依次调用HelloWorldApplication的   main()方法  -->  initialize()方法  -->  getName()方法

2). HelloWorldApplication    -->    run(HelloWorldConfiguration configuration, Environment environment)

因为  HelloWorldApplication  继承了  Application<HelloWorldConfiguration>,所以在调用  HelloWorldApplication  的run()方法之前  dropwizard  会通过读取  hello-world.yml  文件来初始化run()方法的  configuration  参数。run()方法主要用来注册用户资源。

3). 执行  HelloWorldApplication  的  run()  方法,注册用户资源

比如当前的代码中,注册了用来整合返回值显示模板和默认访问用户的HelloWorldResource和用来检查自定义template是否符合标准的TemplateHealthCheck

4). 前三步执行完毕后,服务已经启动成功

5). 浏览器地址栏输入:http://localhost:8080/hello-world?name=zhangsan进行访问

 

DropWizerd项目部署

通过maven将项目打包成jar包,达到可以在cmd中可以 java -jar xxx.jar来运行

1. 打开cmd,进入到maven项目的根目录,执行mvn package

2. 打包成功后,根目录下回多出一个target目录,进入其中找到项目的jar包,如:XXXXXXXX-0.0.1-SNAPSHOT.jar

3. 将XXXXXXXX-0.0.1-SNAPSHOT.jar拷贝到一个指定目录,如:test,同时需要将dropwizard环境配置文件也拷贝到test目录下(即onprem.yml)

4. 启动cmd,进入到test目录下,执行如下命令java -jar XXXXXXX-0.0.1-SNAPSHOT.jar,如果成功,则输出信息也前面通过eclipse run启动时输出的信息基本一致。

 

bonsaiJS

bonsaiJS 是个轻量级的 JavaScript 图形库,提供直观的图形 API 和 SVG 渲染器。主要特性包括:架构分离的运行器和渲染器;iFrame,Worker 和 Node 运行上下文;形状,路径,Assets(音频,图像,字体,subMovies),Keyframe 和常规动画,等等。支持现代化浏览器: Safari, Chrome 和 Firefox。

 

两个概念

On-Premise  本地运维(部署)

On-Cloud     云端运维(部署)

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值