在spring boot三分钟上手无界流处理系统Spark Streaming,并实现流式点赞统计
在页面上每次点赞,把这个被点赞的文章id发送到kafka,然后通过spark streaming读取kafka里的数据,统计出点赞的数量,更新回mysql中
完整案例代码已上传github:https://github.com/neatlife/mySparkLikes
在spring boot中集成微服务网关系统Spring Cloud Zuul
spring cloud zuul由大名鼎鼎的netflix公司开发,已经超越spring cloud gateway微服务网关系统,成为了Spring Cloud全家桶里排名第一的微服务网关系统了
网关作为所有应用系统的最前端,可以提供以下的价值
- 为后端微服务系统提供统一的入口
- 为后端微服务系统提供统一的授权机制
- 为后端微服务系统提供统一的认证机制
- 为后端微服务系统api提供统一签名校验机制
- 为流量入口添加日志记录
- qps统计
- 限流
完整代码已上传GITHUB,参考:https://github.com/neatlife/myzuul
创建网关项目
可以在https://start.spring.io/创建新的spring boot项目作为网关的骨架,比如
注意需要把Zuul网关组件添加进来,也可以手动添加,pom依赖如下:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
在spring boot中3分钟上手阿里巴巴服务熔断系统sentinel
一直在用hystrix做熔断降级,但是无奈hystrix官方已经不再维护了,sentinel背后是阿里巴巴公司,并且一直在维护sentinel,所以先了解下,hystrix不够用时,可以换成sentinel
并且特性丰富,这里就使用如下两个核心功能
- 熔断
- 流控
启动Sentinel控制台
sentinel的控制台是由spring boot开发,特殊需求可以修改源码定制,源码参考:sentinel-dashboard
可以使用docker一键启动控制台
编写sentinel-dashboard的Dockerfile
FROM openjdk:8-jdk-alpine
ADD https://github.com/alibaba/Sentinel/releases/download/1.6.0/sentinel-dashboard-1.6.0.jar /sentinel-dashboard-1.6.0.jar
ENTRYPOINT ["java", "-Dserver.port=8080", "-Dcsp.sentinel.dashboard.server=localhost:8080", "-Dproject.name=sentinel-dashboard", "-jar", "/sentinel-dashboard-1.6.0.jar", "-Dfile.encoding=utf-8"]
构建sentinel-dashboard镜像:docker build -t sentinel-dashboard .
然后启动
docker run --name sentinel-dashboard \
-it --rm -p 8719:8719 -p 8780:8080 sentinel-dashboard
其中8080是sentinel web控制界面端口,8719是sentinel应用端和控制台通信端口,参考配置控制台信息
打开 本机ip:8780 查看效果,默认的用户名密码都是 sentinel
基于顺丰同城接口编写sdk,java三方sdk编写思路
由于公司外卖业务需要用到顺丰的配送体系,技术上需要对接顺丰
个人比较感兴趣,但是顺丰没有提供sdk,所以研究下自己写了一个
完整代码已上传github 🎉:https://github.com/neatlife/spring-boot-sfcity
技术选型
三方sdk编写有两种实现方式
- 不依赖框架,更通用,但是集成成本较高
- 依赖框架,比如spring boot,这样使用起来效率更高
为了提高使用效率,这里选择基于spring boot框架进行编写
前期准备
有很多基于spring boot的sdk了,骨架就不需要自行搭建了,找了下面几个进行参考
- https://github.com/jibaole/spring-boot-starter-alimq
- https://github.com/spring-projects/spring-data-redis
研究api文档
顺丰同城api文档地址:http://commit-openic.sf-express.com/open/api/docs/index#/apidoc
目前顺丰同城的开发者api个人可以注册,注册后可以设置回调地址
基于spring boot框架进行二次封装,微型框架编写思路
目标:减少重复代码,提高开发效率,项目地址:https://github.com/neatlife/jframework
欢迎star,欢迎pr(求star, 求star, 求star)
可封装功能列表
E文 | 功能 | 目前作用 |
---|---|---|
controller | 控制器父类 | 简化控制器里的常见操作 |
exception | 异常 | 统一全局业务异常操作 |
handler | 异常拦截 | 全局异常拦截到日志里 |
http | 请求响应实体 | 统一全局响应实体 |
hystrix | hystrix事件拦截 | 熔断时发送报警邮件 |
jpa | jpa非业务重复代码封装 | 自动给deleted_at, updated_at, created_at赋值 |
json | 响应json数据的二次处理 | 自动格式化金额小数位数 |
listener | spring boot框架事件 | 在框架启动时给util注入service实例 |
logback | 自定义logback日志输出 | 将日志输出到elk的redis,方便elk统一进行日志处理 |
model | 基础jpa实体 | 包含deleted_at, updated_at, created_at字段的实体 |
redis | 自定义redis序列化和反序列化操作 | 使用GenericJackson2JsonRedisSerializer序列化redis值,提高可读性 |
request | 自定请求数据的解析 | 处理json请求 |
springfox | 自定义springfox文档解析 | ApiClass支持文档描述引用 |
util | 常用工具收集 | 比如json, http请求等常用工具类 |
validator | 请求参数自定义校验 | 检查参数长度 |
apiversion | 支持不同的api的版本到不同的控制器逻辑 | 参考 MainController |
Copyright © 2015 Theme used GitHub CSS. 访问人/ 次