一、简介
Bboss后端基于Gradle模块化构建,灵活便捷。框架模块丰富,涵盖数据同步ETL工具、J2ee开发框架、微服务、数据库、中间件、安全、配置、缓存、国际化、elasticsearch
client、web
session共享、redis、kafka、mongodb工具包等常用模块,最大程度满足开发需要。同时,严格遵守WEB安全规范,从根本上避免SQL注入、XSS攻击、CSRF攻击等常见的
Web 攻击手段。支持主流的分布式微服务架构,快速构建高可用服务集群。
Bboss基于Apache License开源协议,由开源社区bboss发起和维护,主要由以下三部分构成:
-
Elasticsearch Highlevel Java Restclient , 一个高性能高兼容性的Elasticsearch/Opensearch java客户端框架
-
数据采集同步ETL ,一个基于java语言实现数据采集作业的强大ETL工具,提供丰富的输入插件和输出插件,可以基于插件规范轻松扩展新的输入插件和输出插件
-
流批一体化计算框架 ,提供灵活的数据指标统计计算流批一体化处理功能的简易框架,可以结合数据采集同步ETL工具,实现数据流处理和批处理计算,亦可以独立使用;计算结果可以保存到各种关系数据库、分布式数据仓库Elasticsearch、Clickhouse等,特别适用于数据体量和规模不大的企业级数据分析计算场景,具有成本低、见效快、易运维等特点,助力企业降本增效。
此外,B-BOSS还是中国移动面向商业客户的后台业务支撑系统,功能上不仅涵盖了集团客户和合作伙伴的计费(部分)、结算、账务、业务等方面,并且尝试建立对于全电信业务的综合服务开通,服务保障机制。
二、功能特色
-
ORM和DSL二者兼顾,类mybatis方式操作ElasticSearch,提供丰富的开发API和开发Demo;
-
采用XML文件配置和管理检索dsl脚本,简洁而直观;提供丰富的逻辑判断语法,在dsl脚本中可以使用变量、脚本片段、foreach循环、逻辑判断、注释;基于可扩展DSL配置管理机制可以非常方便地实现数据库、redis等方式管理dsl;配置管理的dsl语句支持在线修改、自动热加载,开发和调试非常方便;
-
提供Elasticsearch集群节点自动负载均衡和容灾恢复机制,Elasticsearch节点断连恢复后可自动重连,高效可靠;
-
提供Elasticsearch集群节点自动发现机制:自动发现Elasticsearch服务端节点增加和下线操作并变更客户端集群可用节点地址清单;
-
提供http 连接池管理功能,提供精细化的http连接池参数配置管理;
-
支持在应用中访问和操作多个Elasticsearch集群,每个Elasticsearch集群的版本可以不同;
-
支持基于X-Pack和searchguard两种安全认证机制;
-
支持Elasticsearch-SQL-ORM和Elasticsearch-JDBC;
-
提供高效的BulkProcessor处理机制;
-
提供按时间日期ES历史数据清理工具;
学习成本低,上手快,代码简洁,安全高效,客户端负载容灾,兼容性好,易于集成。
三、应用场景
![图片](https://img-
blog.csdnimg.cn/img_convert/8839cc80f9ff2373c9e40e00b4856749.png)
四、Elasticsearch Highlevel Java Restclient
Bboss Elasticsearch Highlevel Java Restclient是一套基于query
dsl语法操作和访问分布式搜索引擎Elasticsearch/Opensearch的o/r mapping高性能开发库
![图片](https://img-
blog.csdnimg.cn/img_convert/5a5cddc95f4e29e4966cd0d9b94f6edb.png)
五、数据采集同步ETL以及流批一体化计算框架
数据采集同步ETL以及流批一体化计算框架,基于灵活的插件体系结构,提供数据采集、数据清洗转换处理和数据入库以及数据指标统计计算流批一体化处理功能,提供丰富的输入插件和输出插件,可以基于插件规范轻松扩展新的输入插件和输出插件:
![图片](https://img-
blog.csdnimg.cn/img_convert/aa580597ae4225c3399f76ee2667465a.png)
六、数据采集ETL
数据采集同步ETL以及流批一体化计算作业分为作业配置态和运行态,作业可以独立调度运行,亦可以嵌入到应用中运行,同时也可以和各种主流的调度引擎(quartz、xxl-
job等)结合运行:
![图片](https://img-
blog.csdnimg.cn/img_convert/a3b7b5b0ecff97b93ba7fdebeb84ea93.png)
通过bboss可以灵活定制具备各种功能的数据采集统计作业:
-
只采集和处理数据作业;
-
采集和处理数据、指标统计计算混合作业–通过ImportBuilder注册ETLMetrics+其他数据源Output插件结合实现;
importBuilder.setDataTimeField(“logOpertime”);
importBuilder.addMetrics(keyMetrics);//通过importBuilder注册指标计算器,对采集数据进行指标计算并保存指标计算结果到各种数据库
ElasticsearchOutputConfig elasticsearchOutputConfig = new ElasticsearchOutputConfig();
elasticsearchOutputConfig
.setTargetElasticsearch(“default”)
.setIndex(“dbdemo”)
.setEsIdField(“log_id”)//设置文档主键,不设置,则自动产生文档id
.setDebugResponse(false)//设置是否将每次处理的reponse打印到日志文件中,默认false
.setDiscardBulkResponse(false);//设置是否需要批量处理的响应报文,不需要设置为false,true为需要,默认false
importBuilder.setOutputConfig(elasticsearchOutputConfig);//设置Elasticsearch输出插件,保存加工后的原始数据 -
采集数据只做指标统计计算作业–通过指标插件MetricsOutputConfig实现;
MetricsOutputConfig metricsOutputConfig = new MetricsOutputConfig();
metricsOutputConfig.setDataTimeField(“logOpertime”);
metricsOutputConfig.addMetrics(keyMetrics);//通过Metrics输出插件注册指标计算器,对采集数据进行指标计算并保存指标计算结果到各种数据库
importBuilder.setOutputConfig(metricsOutputConfig);//设置Metrics输出插件
4)可以在应用中单独集成和使用指标统计功能;
七、数据采集特点
Bboss支持全量和增量数据采集,增量数据采集默认基于sqlite数据库管理增量采集状态,可以配置到其他关系数据库管理增量采集状态,提供对多种不同数据来源增量采集机制:
-
基于数字字段增量采集:各种关系数据库、Elasticsearch、MongoDB、Clickhouse等;
-
基于时间字段增量采集:各种关系数据库、Elasticsearch、MongoDB、Clickhouse、HBase等,基于时间增量还可以设置一个截止时间偏移量,比如采集到当前时间前十秒的增量数据,避免漏数据;
-
基于文件内容位置偏移量:文本文件、日志文件基于采集位置偏移量做增量;
-
基于ftp文件增量采集:基于文件级别,下载采集完的文件就不会再采集;
-
支持mysql binlog,实现mysql增删改实时增量数据采集;
八、流批一体化计算特点
-
支持时间维度和非时间维度指标计算;
-
时间维度指标计算:支持指定统计滑动时间窗口,支持设定时间统计窗口类型,在流处理或者离线处理过程中,对于数据到来的先后顺序没有严格要求,乱序数据不影响最终指标计算结果;
-
一个指标支持多个维度和多个度量字段计算,多个维度字段值构造成指标的唯一指标key,支持有限基数key和无限基数key指标计算(维度字段组合形成的唯一指标key的个数是有限的就是有限基数,个数是无限的就是无限基数);
-
一个作业可以支持多种类型的指标,每种类型指标支持多个指标计算;
-
支持准实时指标统计计算和离线指标统计计算;
-
可以从不同的数据输入来源获取需要统计的指标数据,亦可以将指标计算结果保存到各种不同的目标数据源;
九、典型应用案例—互联网用户行为分析监控
![图片](https://img-
blog.csdnimg.cn/img_convert/c3588450782295e4498afa29e9c4e321.png)
十、兼容性
作为Elasticsearch兼容性最好的java客户端和数据采集&流批一体化计算工具,bboss各版本对Elasticsearch、Spring
boot兼容性说明如下:
bboss | Elasticsearch | spring boot |
---|---|---|
all | 1.x | 1.x,2.x,3.x |
all | 2.x | 1.x,2.x,3.x |
all | 5.x | 1.x,2.x,3.x |
all | 6.x | 1.x,2.x,3.x |
all | 7.x | 1.x,2.x,3.x |
all | 8.x | 1.x,2.x,3.x |
jdk兼容性:jdk 1.8+
十一、 Spring Boot 集成 Bboss
要在Spring Boot中集成BBoss并实现Elasticsearch的增删查改,需要按照以下步骤操作:
1. 添加依赖
在你的pom.xml文件中添加BBoss和Elasticsearch的依赖:
<dependencies>
<!-- BBoss -->
<dependency>
<groupId>com.github.bboss</groupId>
<artifactId>bboss-framework</artifactId>
<version>最新版本</version>
</dependency>
<!-- Elasticsearch -->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>最新版本</version>
</dependency>
</dependencies>
2.配置Elasticsearch
在application.properties文件中配置Elasticsearch的相关信息:
spring.data.elasticsearch.cluster-name=你的集群名称
spring.data.elasticsearch.cluster-nodes=你的节点地址
3. 创建实体类
创建一个实体类,用于映射Elasticsearch中的文档。例如,创建一个名为User的实体类:
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
@Document(indexName = "user", type = "_doc")
public class User {
@Id
private String id;
private String name;
private int age;
// getter和setter方法
}
4. 创建Repository接口
创建一个继承自ElasticsearchRepository的接口,用于操作Elasticsearch:
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
public interface UserRepository extends ElasticsearchRepository<User, String> {
}
5. 使用Repository进行增删查改操作
在你的服务类中,注入UserRepository并使用它进行增删查改操作:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
// 增加用户
public User save(User user) {
return userRepository.save(user);
}
// 删除用户
public void delete(String id) {
userRepository.deleteById(id);
}
// 更新用户
public User update(User user) {
return userRepository.save(user);
}
// 查询用户
public User findById(String id) {
return userRepository.findById(id).orElse(null);
}
}
现在你可以在你的应用中使用UserService来进行Elasticsearch的增删查改操作了。
![图片](https://img-
blog.csdnimg.cn/img_convert/dd09d6276298041af5d7351e37bdd704.png)
学习网络安全技术的方法无非三种:
第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。
第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
第三种就是去找培训。
接下来,我会教你零基础入门快速入门上手网络安全。
网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。
第一阶段:基础准备 4周~6周
这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
第二阶段:web渗透
学习基础 时间:1周 ~ 2周:
① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
配置渗透环境 时间:3周 ~ 4周:
① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。
渗透实战操作 时间:约6周:
① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
以上就是入门阶段
第三阶段:进阶
已经入门并且找到工作之后又该怎么进阶?详情看下图
给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
![](https://img-blog.csdnimg.cn/img_convert/ea9b9485060301f66dea99b58bd0a054.jpeg)