zoukankan      html  css  js  c++  java
  • 【码云周刊第 19 期】如何开发电商系统?先来半打分布式调度系统/框架

    技术干货

    标签:技术分享

    1、Dubbo 与 Zookeeper、SpringMVC 整合和使用

    本文整理了 Dubbo 与 Zookeeper、SpringMVC 整合和使用的原理,入门必 Mark~

    2、Angular vs React 最全面深入对比

    如今,Angular 和 React 这两个JavaScript框架可谓红的发紫,同时针对这两个框架的选择变成了当下最容易被问及或者被架构设计者考虑的问题,本文或许无法告诉你哪个框架更优秀,但尽量从更多的角度去比较两者,尽可能的为你在选择时提供更多的参考意见

    3、合格前端系列之 Vue 组件开发

    这次将是对上次的一次拓展。其中也会有vue部分源码的解析。大家可以先参考我另外一篇有关 vue 组件开发的文章, (一入前端深似海,从此红尘是路人系列第八弹之浅析 Vue 组件开发

    标签:独家译文

    4、Java 9 中的 9 个新特性

    Java 8 发布三年多之后,即将快到2017年7月下一个版本发布的日期了。 你可能已经听说过 Java 9 的模块系统,但是这个新版本还有许多其它的更新。 这里有九个令人兴奋的新功能将与 Java 9 一起发布。

    5、记一次 C# 代码审查 

    首先,你需要提出以下问题:

    • 你想在这里实现什么?

    • 有什么要求?

    这是启动每个代码审查过程的最佳方式。一要求做代码审查的人已经知道这些问题的答案。  此函数返回一个 GitHub 收藏的用户列表。 在 GitHub 上,有一个追踪用户的能力。

    码云推荐

    1、JAVA 分布式快速开发基础平台 iBase4J

    项目简介

    • iBase4J是Java语言的分布式系统架构。 使用Spring整合开源框架。
    • 使用Maven对项目进行模块化管理,提高项目的易开发性、扩展性。
    • 系统包括三个模块:公共模块、系统管理模块、Web展示模块。
    • 公共模块:公共功能(AOP、缓存、基类、调度等等)、公共配置、工具类。
    • 系统管理模块:包括用户管理、权限管理、数据字典、系统参数管理等等。
    • 每个模块都是独立的系统,可以无限的扩展模块,模块之间使用Dubbo或MQ进行通信。
    • 每个模块服务多系统部署,注册到同一个Zookeeper集群服务注册中心,实现集群部署。

    主要功能

    1. 数据库:Druid数据库连接池,监控数据库访问性能,统计SQL的执行性能。 数据库密码加密,加密方式请查看PropertiesUtil,decryptProperties属性配置需要解密的key。
    2. 持久层:mybatis持久化,使用MyBatis-Plus优化,减少sql开发量;aop切换数据库实现读写分离。Transtraction注解事务。
    3. MVC: 基于spring mvc注解,Rest风格Controller。Exception统一管理。
    4. 调度:Spring+quartz, 可以查询、修改周期、暂停、删除、新增、立即执行,查询执行记录等。
    5. 基于session的国际化提示信息,职责链模式的本地语言拦截器,Shiro登录、URL权限管理。会话管理,强制结束会话。
    6. 缓存和Session:注解redis缓存数据,Spring-session和redis实现分布式session同步,重启服务会话不丢失。
    7. 多系统交互:Dubbo,ActiveMQ多系统交互,ftp/sftp/fastdafs发送文件到独立服务器,使文件服务分离。
    8. 前后端分离:没有权限的文件只用nginx代理即可。
    9. 日志:log4j2打印日志,业务日志和调试日志分开打印。同时基于时间和文件大小分割日志文件。
    10. QQ、微信、新浪微博第三方登录。
    11. 工具类:excel导入导出,汉字转拼音,身份证号码验证,数字转大写人民币,FTP/SFTP/fastDFS上传下载,发送邮件,redis缓存,加密等等。

    2、分布式任务调度框架 light-task-scheduler 

    项目简介:LTS(light-task-scheduler)主要用于解决分布式任务调度问题,支持实时任务,定时任务和Cron任务。有较好的伸缩性,扩展性,健壮稳定性而被多家公司使用,同时也希望开源爱好者一起贡献。

    架构图

    LTS architecture

    3、分布式任务调度平台 XXL-JOB

    项目简介:XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

    特性

    • 简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
    • 动态:支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,即时生效;
    • 调度中心HA(中心式):调度采用中心式设计,“调度中心”基于集群Quartz实现,可保证调度中心HA;
    • 执行器HA(分布式):任务分布式执行,任务"执行器"支持集群部署,可保证任务执行HA;
    • 任务Failover:执行器集群部署时,任务路由策略选择"故障转移"情况下调度失败时将会平滑切换执行器进行Failover;
    • 一致性:“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行;
    • 自定义任务参数:支持在线配置调度任务入参,即时生效;
    • 调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞;
    • 弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务;
    • 邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件;
    • 状态监控:支持实时监控任务进度;
    • Rolling执行日志:支持在线查看调度结果,并且支持以Rolling方式实时查看执行器输出的完整的执行日志;
    • GLUE:提供Web IDE,支持在线开发任务逻辑代码,动态发布,实时编译生效,省略部署上线的过程。支持30个版本的历史版本回溯。
    • 数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性;
    • 任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔;
    • 推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库, 方便用户接入和使用;
    • 任务注册: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址;
    • 路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移;
    • 运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
    • 脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python等类型脚本;

    4、基于 zookeeper 的分布式任务调度组件 uncode-schedule 

    项目简介:基于 zookeeper 的分布式任务调度组件,非常小巧,使用简单,只需要引入 jar 包,不需要单独部署服务端。确保所有任务在集群中不重复,不遗漏的执行。支持动态添加和删除任务。

    功能概述

    1. 基于zookeeper+spring task/quartz/uncode task的分布任务调度系统。
    2. 确保每个任务在集群中不同节点上不重复的执行。
    3. 单个任务节点故障时自动转移到其他任务节点继续执行。
    4. 任务节点启动时必须保证zookeeper可用,任务节点运行期zookeeper集群不可用时任务节点保持可用前状态运行,zookeeper集群恢复正常运期。
    5. 支持动态添加、修改和删除任务,支持任务暂停和重新启动。
    6. 添加ip黑名单,过滤不需要执行任务的节点。
    7. 后台管理和任务执行监控。

    说明

    • 单节点故障时需要业务保障数据完整性或幂等性

    模式架构

    Worker构成 

    5、分布式 B2C 商城 xbin-store

    项目简介:模仿国内知名B2C网站,实现的一个分布式B2C商城 使用Spring Boot 自动配置 Dubbox / MVC / MyBatis / Druid / Solr / Redis 等。

    使用技术

    • 后台
      • 使用Spring Boot 构建整个项目 去除 XML 配置
      • Maven构建项目
      • Jenkins作为持续集成
      • 采用Dubbox作为RPC框架
      • kryo序列化
      • 使用Spring+Spring MVC+MyBatisSSM框架
      • 数据库连接池使用druid
      • 数据库使用MySQLRedis
      • 页面引擎采用 Beetl
      • 网页采用freemarker生成静态化页面
      • 存储采用FastDFS存储图片等文件
      • 采用Solr实现搜索服务
      • Swagger2 生成 RESTful Apis文档
      • 负载均衡使用Nginxkeepalived实现高可用
      • 采用Spring Scheduled做任务调度
      • 消息中间件采用RabbitMQ
      • 在分布式事务上则采用了TCC解决订单支付方面时效性要求性高的分布式事务,可靠的消息服务则来解决如会计记录等时效性要求低的分布式事务.
    • 前台
      • 采用基于AdminLTEroncoo-adminLTE(主要增加了Ajax的布局模式)
      • AdminLTE集成太多Js这里就不一一列举了

    6、 分布式调度解决方案 Elastic-Job

    项目简介:Elastic-Job 是一个分布式调度解决方案,由两个相互独立的子项目 Elastic-Job-Lite 和 Elastic-Job-Cloud 组成。Elastic-Job-Cloud 使用 Mesos + Docker 的解决方案,额外提供资源治理、应用分发以及进程隔离等服务。

    功能列表

    • 应用自动分发
    • 基于Fenzo的弹性资源分配
    • 分布式调度协调
    • 弹性扩容缩容
    • 失效转移
    • 错过执行作业重触发
    • 作业分片一致性,保证同一分片在分布式环境中仅一个执行实例
    • 支持并行调度
    • 支持作业生命周期操作
    • 丰富的作业类型
    • Spring整合
    • 运维平台
    • 基于Docker的进程隔离(TBD)

    https://my.oschina.net/gitosc/blog/894187

  • 相关阅读:
    MySQL与SQLServer的语法区别
    Linux系统ELK环境搭建
    springboot_yml配置, 以及 properties 和yml转换示例
    mybatis-plus的 mapper.xml 路径配置问题
    Windows下 启动redis
    Mysql 创建库,删除库 命令,脚本
    mybatis中传入多个参数时,接口调用报错Parameter '*****' not found ...
    构建启动Vue项目
    HyperLedger/Fabric区块连网络-编译启动单节点
    HyperLedger/Fabric区块连网络 死磕fabric
  • 原文地址:https://www.cnblogs.com/findumars/p/5126073.html
Copyright © 2011-2022 走看看