01.项目简介

        开源数字货币交易所,基于Java开发的货币交易所 | BTC交易所 | ETH交易所 | 数字货币交易所 | 交易平台 | 撮合交易引擎。本项目基于SpringCloudAlibaba微服务开发,可用来搭建和二次开发数字货币交易所。

项目特色:

  • 基于内存撮合引擎,比传统基于数据库撮合引擎更快 ;
  • 前后端分离,基于OAuth2.0 + JWT的API授权机制 ;
  • 基于SpringCloud微服务架构,扩展更容易 ;
  • 集成阿里最新的研究成功SpringCloudAlibaba ;
  • MySQL、MongoDB、Redis多种数据存储方式,只为更快 ;
  • Kafka发布订阅消息队列,让订单更快流转 ;
  • Netty秒级实时K-Line推送 ;
  • uni-app“七端”共享 ;
  • 主流币种对接区块链接口齐全,开箱即用 ;
  • 冷热钱包分离,两种提现方式,保证安全;

技术选型

后台技术

组件

作用

参考网站

Spring Framework

容器

Spring Framework

Spring Boot

开发脚手架框架

Spring Cloud

Spring Cloud

微服务框架

Spring Boot

Spring Security

安全框架

Spring Security

MyBatis-Plus

ORM框架

Redirect

Nacos

服务治理

https://nacos.io/zh-cn/

Sentinel

服务保护

https://sentinelguard.io/zh-cn/

Seata

分布式事务

http://seata.io/zh-cn/

MyBatis

ORM框架

mybatis – MyBatis 3 | 简介

MyBatis Generator

代码生成

MyBatis Generator Core – Introduction to MyBatis Generator

PageHelper

MyBatis物理分页插件

Mybatis_PageHelper: Mybatis分页插件

Druid

数据库连接池

https://github.com/alibaba/druid

Mongodb

分布式文件存储数据库

MongoDB: The Developer Data Platform | MongoDB

ZooKeeper

分布式协调服务

Apache ZooKeeper

Redis

分布式缓存数据库

Redis

Redisson

Redis客户端

Redisson: Easy Redis Java client with features of In-Memory Data Grid

Jetcache

缓存框架

https://github.com/alibaba/jetcache

RabbitMQ

消息队列

RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQ

Kafka

消息队列

Apache Kafka

Disruptor

并发框架

LMAX Disruptor

FastDFS

自建分布式文件系统

https://github.com/happyfish100/fastdfs

Log4J

日志组件

Apache log4j 1.2 -

Swagger2

接口测试框架

API Documentation & Design Tools for Teams | Swagger

Lombok

简化编码插件

Project Lombok

Cloud Alibaba OSS

Qiniu

云存储

对象存储 OSS_云存储服务_企业数据管理_存储-阿里云 七牛云 | 一站式场景化智能音视频 APaaS

FastJson & Gson

数据序列化

https://github.com/alibaba/fastjson

Jenkins

持续集成工具

Jenkins

Maven

项目构建管理

Maven – Welcome to Apache Maven

Tio

实时推送

t-io: 网络编程很苦,用t-io后会很甜

Netty

实时推送

https://netty.io/

Akka

异步并发计算

https://akka.io/

关于Spring Cloud

        Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。 一般而言,一个完整的SpringCloud框架应该如下图所示:

关于Spring Cloud Alibaba

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

组件:

  1. Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  2. Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  3. RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
  4. Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
  5. Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  6. Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

功能介绍

后台管理系统

前台系统

移动全栈

模块划分

撮合引擎服务

        分布式内存撮合系统,使用Raft协议自建集群,实现数据复制、集群选举等,并自研分布式币种路由策略,解决多币之间数据隔离,线程竞争问题;当主机挂掉时,备机能快速感知并替换原主机状态继续提供服务,当集群扩容时,也实现数据分片的迁移和再分配。在部署时,我们可以采用单一分组,也可以采用 MULTI-RAFT-GROUP。我们还使用Nosql数据库mongo作为recovery的兜底方案,当撮合引擎所有节点都进行重新实例化时,那么就会走该兜底方案。

行情服务

  • OpenAPI

        对外提供OpenAPI(开放平台),我们所有API的设计遵循REST 设计标准,使用改造完后的swagger生成更符合国人习惯的测试平台;

  • K-Line

        K线为专业K线,K线可自定义日K、1分、3分、5分、15 分、30分、10小时、2小时、4小时、6小时、12小时、1周等。价格平均线可以自定义:MA5、MA10、MA30及其他个性化配置。技术指标包括:MACD、 KDJ、RSI、DMI、OBV、BOLL、SAR、DMA、TRIX、BRAR、VR、EMV、WR、ROC、MTM、PSY。

推送服务

        推送服务为实时推送,数据的获取来自Kafka,多线程订阅Kafka的分组,底层通过修改spring-boot-stater-websocket让其支持Netty,并测试了TIO的推送方案,当客户端压力变大时,可通过Spring Cloud Gateway 和 Nginx 实现负载均衡。经测试,客户端无卡顿或数据丢失的情况。

交易服务

        币种获取、区域数据、币币交易市场行情,币币交易市场深度等各种交易数据展示,底层采用Redis做高速缓存,并使用Sentinel实现了服务的降级和流控。

用户中心服务

        提供用户账号信息、身份验证、注册登陆、邀请分级奖励、第三方验证等功能;

监控服务

  • Boot-Admin :

        实现了服务上下线的邮件/短信/微信通知,显示微服务 name、id 和 version,显示在线状态,Loggers 的日志级别管理,Threads 线程管理,Environment 管理等;

  • sentinel-dashboard:

        提供一个轻量级的控制台,它提供机器发现、单机资源实时监控、集群资源汇总,以及规则管理的功能;

  • Zipkin:

        提供分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪,以及服务直接依赖关系的计算。

钱包服务

        采用了业界领先的冷热隔离充值钱包系统、多重签名、高防护DDOS攻击系统等领先技术,分钟级日志分析监控等手段,充分保证客户资产安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/200079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Navicat在分辨率不同的屏幕窗口显示大小不一致问题解决

1.主屏幕为2560*1600分辨率,能够显示较多数据连接 2.在第二屏幕分辨率低,字体变大,显示内容变少 解决办法: 1.右击navicat图标-属性 2.选择【兼容性】-在兼容性页面中选择**“更改高DPI设置”** 3…勾选“高DPI缩放替代”&a…

minio配置监听(对象操作日志)

minio配置监听对象操作 本文档适用于minio2021.3.17版本 有时我们需要查看minio中对象操作的日志,比如像监听minio某一个桶中的删除事件,就需要配置监听。minio支持将监听的结果输出到es、pg、amq等等,下面介绍一下将minio对象操作监听结果输…

使用异或查找数组中出现奇数次的唯一或唯二数字

题目: 1.查找数组中的所有出现奇数次的数字,要求数组中不能有负数 2.现在有个数组,假设这个数组中出现奇数次的数字有且只有1个,请把它找出来 3.现在有个数组,假设这个数组中出现奇数次的数字有且只有2个&#xff0c…

【算法思考记录】力扣2477. 到达首都的最少油耗【JavaScript,深度优先搜索】

原题链接 到达首都的最少油耗:一种优雅的解决方案 题目解析 这个算法题目描述了一个有趣的场景:一棵由城市和道路组成的树形结构,其中每个节点代表一个城市,边代表道路。所有城市的代表需要前往编号为0的城市——首都参加会议。…

一個Tensor的一生 - torch.rand篇

一個Tensor的一生 - torch.rand篇 前言torch/\_C/_VariableFunctions.pyibacktracePython bindingstorch::autograd::THPVariable_randoperator() C APItorch::rand_symintat::rand_symint dispatchat::_ops::randat::_ops::rand::callnative_functions.yamlat::(anonymous nam…

【人体解剖学与组织胚胎学】练习一高度相联知识点整理及对应习题

文章目录 [toc]骨性鼻旁窦填空题问答题 关节填空题简答题 胸廓填空题简答题![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/827e7d1db3af42858d8734bb81911fea.jpeg)补充 骨性鼻旁窦 填空题 问答题 关节 填空题 简答题 胸廓 填空题 简答题 补充 第二肋对应胸骨…

Leetcode.2477 到达首都的最少油耗

题目链接 Leetcode.2477 到达首都的最少油耗 rating : 2012 题目描述 给你一棵 n n n 个节点的树(一个无向、连通、无环图),每个节点表示一个城市,编号从 0 0 0 到 n − 1 n - 1 n−1 ,且恰好有 n − 1 n - 1 n−…

什么是呼叫中心的语音通道?呼叫中心语音线路有几种?

什么是呼叫中心的语音通道? 呼叫中心的语音通道是指在呼叫中心中使用的语音信号传输通道,它是呼叫中心中至关重要的一部分,负责将客户的语音信息传递给客服代表,以及将客服代表的语音信息传递给客户。在呼叫中心的运营中&#xf…

JAVA-JVM 之Class字节码文件的组成 【下篇】

字节码 类元数据接口元数据字段元数据方法元数据属性元数据 主页传送门:📀 传送 类元数据 此部分元数据主要包含类索引(This_Class)和父类索引(Super_Class)。 类索引:指向Class字节码常量池表…

回顾一下磁盘管理

目录 一、磁盘概述 1.磁盘表示方法/dev/ 2.分区类型 3.文件系统 4.inode节点 二、磁盘操作 1.查看与添加磁盘 2.分区 2.非交互式 3.fdisk /dev/sdb < part.txt 三、LVM逻辑卷 1、物理卷中的操作命令 2、卷组中的操作命令 3、逻辑卷中的操作命令 一、磁盘概述 …

Python----Pandas

目录 Series属性 DataFrame的属性 Pandas的CSV文件 Pandas数据处理 Pandas的主要数据结构是Series&#xff08;一维数据&#xff09;与DataFrame&#xff08;二维数据&#xff09; Series属性 Series的属性如下&#xff1a; 属性描述pandas.Series(data,index,dtype,nam…

mybatis 的快速入门以及基于spring boot整合mybatis

MyBatis基础 MyBatis是一款非常优秀的持久层框架&#xff0c;用于简化JDBC的开发 准备工作&#xff1a; 1&#xff0c;创建sprong boot工程&#xff0c;引入mybatis相关依赖2&#xff0c;准备数据库表User&#xff0c;实体类User3&#xff0c; 配置MyBatis&#xff08;在applic…

2005-2021年地级市绿色发展注意力数据(根据政府报告文本词频统计)

2005-2021年地级市绿色发展注意力数据&#xff08;根据政府报告文本词频统计&#xff09; 1、时间&#xff1a;2005-2021年 2、指标&#xff1a;省、市、年份、一级指标、关键词、关键词词频、总词频 3、范围&#xff1a;270个地级市 4、来源&#xff1a;地级市政府工作报告…

【C++】动态内存管理——new和delete

这篇文章我们讲一下C的动态内存管理&#xff0c;从一个比较陌生的知识说起&#xff0c;我们知道&#xff0c;一个工程可以创建很多.c文件&#xff0c;我们如果定义一个全局变量&#xff0c;只要用extern声明一下&#xff0c;在每个文件都可以用。而用static修饰的全局变量只能在…

MyBatis动态sql语句

1、if if元素可以用于根据条件判断是否包含某个SQL语句片段。 <!--查询年龄大于18岁且小于等于30岁的用户信息:<if>元素用于判断minAge和maxAge是否为null&#xff0c;如果不为null&#xff0c;则将对应的SQL语句片段拼接到最终的SQL语句中 --> <select id&quo…

【ecology】通过F12抓取页面SQL

1、点击流程监控&#xff0c;打开浏览器的”开发者工具“&#xff08;F12&#xff09;&#xff1b; 2、点击搜索&#xff0c;在开发者工具中找到sessionkey&#xff0c;复制后面的值。 3、http://58.213.83.186:8081/api/ec/dev/table/getxml?dataKey 上面的网址的IP地址修改…

Gee教程6.模板(HTML Template)

这一章节的内容是介绍 Web 框架如何支持服务端渲染的场景 实现静态资源服务(Static Resource)。支持HTML模板渲染。 这一章节很多内容是基于net/http库的&#xff0c;该库已经实现了很多静态文件和HMML模板的相关功能的了。 静态文件 网页的三剑客&#xff0c;JavaScript、C…

代理模式-C++实现

代理模式是一种结构型设计模式&#xff0c;为其他对象提供一种代理以控制对这个对象的访问。在某些情况下&#xff0c;一个对象不适合或者无法引用另一个对象&#xff0c;这个时候就需要一个代理对象充当客户端和目标对象之间的中介。 代理模式就是代理对象具备目标对象的所有…

如何写项目部署文档

编写项目部署文档&#xff0c;这是确保项目顺利部署和上线的重要步骤。 1. 项目概述 在这里简要介绍项目的目的、功能和特点。 2. 系统要求 列出项目部署所需的硬件和软件要求&#xff0c;例如操作系统、Java版本、数据库等。 3. 安装步骤 描述项目的下载和安装步骤&…

看懂lscpu的输出

文章目录 1. lscpu1.1 Architecture1.2 逻辑核心数1.3 缓存1.4 CPU型号1.5 NUMA架构1.5.1 CPU多核架构1.5.2 多CPU Socket架构 2. cat /proc/cpuinfo2.1 关键字段 1. lscpu 通过lscpu查看当前系统的CPU信息。 [hadoopserver3 ~]$ lscpuArchitecture: x86_64 …