Spring Cloud

基于开源架构的任务调度系统在证券数据处理中的探索和实践

二次信任 提交于 2020-09-28 13:26:07
摘要: 为了应对证券行业盘后批处理业务复杂度上升带来的批处理时间窗口逐步缩小和运维越来越困难的挑战,上交所技术积极拥抱开源技术,结合上交所批处理的生产经验教训,以零人工介入、自动化运维为目标,开发了一种跨平台、支持多种部署模式的任务调度系统。本文从上交所批处理系统面临的实际挑战出发,通过调研几类典型的批处理架构,选择以开源软件Spring cloud dataflow为基础,设计并研发了上交所批处理任务调度系统。目前,该系统已经在交易系统生产环境上平稳试运行半年有余,为该系统在上交所各技术系统的推广打下了坚实的基础。 关键字:( 任务调度、批处理、Spring cloud dataflow、上交所技术 ) 背景和挑战 随着证券交易市场的快速发展,交易业务种类和待处理数据量也随之不断增加,核心应用系统的批处理业务越来越复杂。不同的批处理业务不但内部批处理单元相互依赖,而且与上下游对接系统的交互也越来越繁杂,导致留给批处理业务的处理时间窗口和应急时间窗口越来越小,这些都对新的批处理架构的高效性、高可用性和易维护性等方面提出了更高的要求。针对上交所批处理业务目前的实际情况,面临着如下问题和挑战。 首先是上交所各系统业务类型和数据量的增多对批处理架构的调度性能和功能提出了更多的要求。目前,上交所的核心交易盘后批处理业务类型越来越多,比如A/B股、综合业务、期权、沪港通等

Spring cloud nacos config 配置中心例子

拈花ヽ惹草 提交于 2020-09-27 07:07:50
Spring cloud 集成 nacos config配置中心的例子,自定义 dataId groupId namespace 使用的依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>0.2.1.RELEASE</version> </dependency> </dependencies> 配置文件;bootstrap.properties 内容 spring.application.name=spring-cloud-example spring.cloud.nacos.config.server-addr=192.168.1.191:8848 spring.cloud.nacos.config.namespace=test spring.cloud.nacos.config.group

如何以源码形式运行Nacos Server

倾然丶 夕夏残阳落幕 提交于 2020-09-26 12:04:11
官方标准运行方式 下载解压可运行包 curl -O https://github.com/alibaba/nacos/releases/download/1.3.2/nacos-server-1.3.2.tar.gz tar -zxvf nacos-server-1.3.2.tar.gz cd nacos/bin 执行运行 # Linux/Unix/Mac 启动命令(standalone代表着单机模式运行,非集群模式): sh startup.sh -m standalone # 如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行: bash startup.sh -m standalone # Windows 启动命令(或者双击startup.cmd运行文件) cmd startup.cmd 为什么要源码化运行 1. 方便开发过程使用 如果从 Spring Cloud Netflix 体系迁移到 Spring Cloud Alibaba 技术体系,明显的感受是整个体系得到简化。 Nacos 承担整个 Spring Cloud 的服务发现、配置管理部分的实现。 是整个开发过程中 强依赖 ,启动微服务业务要去检查 Nacos Server 是否已经启动,解压安装的方式变的非常不便。 如果把 Nacos Server 作为整个微服务框架的一部分直接

绝了!秒杀全场的SpringCloud微服务电商项目(附源码),文档贼全!

风流意气都作罢 提交于 2020-09-24 08:56:25
做公号很久了,听到粉丝问的最多的问题就是:有没有新的完整的项目,因为现在很多流传的项目都太老了,实战意义不是很强。很多程序员每项技术单独拿出来有可能很厉害,例如:springcloud、springboot、redis、nginx、mysql、rabbitMq等,但是普遍缺乏将所有的这些技术整合到一起,从前端到后端,从开发到部署上线,从每个知识点到整体的设计。 本次分享不是分享项目而是教你如何开发一个项目细节流程。 项目介绍 项目技术栈 基于springBoot2.x、springCloud采用前后端分离的架构; 利用FastDFS作为分布式文件存储系统,Canal实现数据同步,监控数据变化; Elasticsearch+IK+Kibana实现商品搜索功能; Spring Security Oauth2 JWT实现微服务统一认证和资源授权; 利用RabbitMq实现异步解耦; Seata实现分布式事务等,从而打造一个高可用的分布式电商系统。 技术架构 系统架构 功能教程 模块说明 项目截图 资料介绍 项目源码 视频教程 项目教程文档(500页) 工具清单 如何领取? 识别并关注公众号「 Java最全面试题库 」; 在下面公众号后台回复关键字「 mall 」 长按上方二维码 2 秒 回复「mall」即可获取上面所有资料 就在前两天,阿里发布了最新的《阿里巴巴Java开发手册》嵩山版

为什么要看源码、如何看源码,高手进阶必看

让人想犯罪 __ 提交于 2020-08-20 09:14:24
作者:xybaby www.cnblogs.com/xybaby/p/10794700.html 由于项目的需求,最近花了较多的时间来看开源项目的代码,在本文中,简单总结一下对 为什么要看源码、如何看源码 这两个问题的思考。 看源码的意义 看源码只是一种方法、手段,而不是目的。我也曾经给自己制定过“阅读xxx源码”的目标,现在看起来真的很蠢,一点不smart(specific、measurable、attainable、relevant、time-bound)。 只有搞清楚了阅读代码的目标,才能有的放矢,抓住重点,高效达成任务。 看源码的意义总结起来包含但不限于以下几点: 一、解决问题(BUG) 只要是代码,就会有bug,只是说bug的多与少、深与浅罢了。现在大家都喜欢发布、使用开源项目,不同的开源项目社区成熟度、代码质量又会有较大的差异,遇到bug就不足为奇了。 当然,遇到bug肯定是先在网上搜索是否有类似的问题,一般可以在google、Stack Overflow、项目的issues里面有对应的关键词搜索。如果搜不到,那么就只能看源码解决了 二、知其所以然 我在[如何学习新技术、团队技术选型时要注意些什么][Link 1]里面提到过,如果我们需要将一个开源项目用到自己的项目中,那么就必须了解这项项目的优缺点,并深知原理,对部分细节(尤其是项目的优势、feature)进行深入研究

阿里Sentinel支持Spring Cloud Gateway啦

感情迁移 提交于 2020-08-20 08:27:16
1. 前言 4月25号,Sentinel 1.6.0 正式发布,带来 Spring Cloud Gateway 支持、控制台登录功能、改进的热点限流和注解 fallback 等多项新特性,该出手时就出手,紧跟时代潮流,昨天刚发布,今天我就要给大家分享下如何使用! 2. 介绍(本段来自Sentinel文档) Sentinel 1.6.0 引入了 Sentinel API Gateway Adapter Common 模块,此模块中包含网关限流的规则和自定义 API 的实体和管理逻辑: GatewayFlowRule:网关限流规则,针对 API Gateway 的场景定制的限流规则,可以针对不同 route 或自定义的 API 分组进行限流,支持针对请求中的参数、Header、来源 IP 等进行定制化的限流。 ApiDefinition:用户自定义的 API 定义分组,可以看做是一些 URL 匹配的组合。比如我们可以定义一个 API 叫 myapi,请求 path 模式为 /foo/ 和 /baz/ 的都归到 myapi 这个 API 分组下面。限流的时候可以针对这个自定义的 API 分组维度进行限流。 其中网关限流规则 GatewayFlowRule 的字段解释如下: • resource:资源名称,可以是网关中的 route 名称或者用户自定义的 API 分组名称。 •

你必须了解Spring的生态

陌路散爱 提交于 2020-08-20 06:45:41
Spring不止是提供了IOC、AOP的功能,还提供了大量的基于Spring的项目,拿来用就行了,用于一站式开发,大大降低了开发的难度。 下面列举下主要的一些Spring的生态项目: Spring Boot:一站式快速开发解决项目。 Spring Cloud:提供对分布式系统的支持。 Spring Data:提供对主流的关系型及NOSQL型数据库的封装支持。 Spring Security:支持系统授权、认证的支持。 Spring Session:提供对session管理的支持。 Spring Batch:提供对大数据的批处理简化处理优化的支持。 Spring Social:提供对社交网络API的集成,如FACEBOOK、新浪微博等。 Spring AMQP:提供对AMQP的消息支持。 Spring LDAP:提供并简化使用LDAP的支持。 Spring XD:用来简化对大数据应用开发。 Spring Integration:通过消息机制对企业集成模式EIP的支持。 Spring Mobile:支持对手机设备检测等功能。 Spring for Android:提供在安卓平台消费restful api的支持。 Spring Web Flow:基于spring mvc提供对向导流程式的开发。 Spring Web Services:提供基于SOAP/Web协议服务支持。

实现SpringCloud之Eureka高可用注册中心

为君一笑 提交于 2020-08-20 05:39:08
在分布式微服务架构中,往往需要充分考虑发生故障的情况,因此在成产环境中必须对各个组件进行高可用部署,对于微服务如此,服务注册中心也是一样,我们需要构建高可用的服务注册中心从而提高系统的可用性。 Eureka Server服务注册中心的高可用实际上就是将自己作为服务注册中心注册自己,这样就可以形成一组相互注册的服务中心,以实现服务清单的互相同步,以此达到高可用的而效果。 第一步:创建EurekaServerApplication1.application.yml,作为EurekaServerApplication1服务中心的配置,将serviceUrl指向EurekaServerApplication2,配置如下: eureka : client : service-url : defaultZone : http://localhost:8762/eureka/ register-with-eureka : false spring : application : name : eureka-server 第二步:创建EurekaServerApplication2.application.yml,,作为EurekaServerApplication2服务中心的配置,将serviceUrl指向EurekaServerApplication1,配置如下: eureka :

Spring Cloud 微服务 分布式

人盡茶涼 提交于 2020-08-20 04:51:38
首先要知道的是Spring Cloud是微服务架构。 微服务架构是一种架构模式,它将单一的应用程序划分成一组很小的服务,服务之间相互协调、互相配合。每个服务都运行在独立的进程中,服务与服务间采用轻量级通信机制(通常是HTTP协议的RESTful API)。每个服务都有着自己的业务,并且能够被独立的部署到生产环境、类生产环境等,对于具体的一个服务而言,应该根据上下文,选择合适的语言、工具对其进行构建。 Spring Cloud中是一种微服务架构,项目案例:www.1b23.com,其中包含如下功能: 服务注册与发现、服务调用、服务熔断、负载均衡、服务降级、服务消息队列、配置中心管理、服务网关、服务监控、全链路追踪、自动化构建部署、服务定时任务。 但是在项目中一般只会用到如下几种: 服务注册与发现:EUREKA 服务负载与调用:NETFLIX OSS RIBBON、NETFLIX FEIGN 服务熔断降级:HYSTRIX 服务网关:NETFLIX Zuul 服务器分布式配置:Spring Coloud Config 服务开发:Spring Boot 下面来看下官方解析 Cloud 分布式系统的开发与一般的系统来说是具有挑战性的。服务之间的交流更为密切,Cloud把项目的工作重点由应用层移到了网络层。代码想要连接到Cloud服务需要12个因素,如配置文件,状态,日志,连接到后端的服务

集群部署的理解

独自空忆成欢 提交于 2020-08-20 02:38:24
中小企业,当单体结构在性能上满足不了公司的发展以及业务需求的时候,在并发量没有过万的时候,不妨引入集群部署。这样成本可控,不会大幅度增长。原有的技术人员也不需要进行培训充电,原有的架构也不需要重新升级。虽然目前springcloud分布式部署比较流行,但是这个需要一个专业的团队来对旧有业务进行升级维护,这样无疑增加人力资源开销。所以目前集群部署还是有很大的生存区间的。 来源: oschina 链接: https://my.oschina.net/osokra/blog/4428484