1. 当前系统技术框架
应用系统: 单体架构,网页版管理中心、用户中心、官网使用 asp.net webfrom (.net framework 4.5) ,对外开放 API 为 asp.net web api 2.0 (.net framework 4.0), 操作客户端为 WPF 框架( .net framework 4.0 )。
数据库: SQLserver 2008 阿里云 RDS 版、 MongoDB ( 2.4.2 单机版)
服务器: 阿里云 Windows Server 2008 数据中心版
2. 当前系统面临的问题
1. 业务数据(订单、费用、操作记录等)持续增长单表数据压力大,影响操作效率(查询、入库出库、扣费、数据导出)
2. 系统跟新发布对正在使用系统的用户造成影响(如跟新期间有订单的操作)
3. 系统配置文件无法动态配置跟新,测试环境配置环境容易因误操作更新到生产环境
4. 现单体架构多处理中心升级难度大,不同地域连接同一台服务器的速度不一样
3. 升级解决方案
1. 原管理中心、用户中心、官网不变保持不变(不能影响当前业务)
2. 增长序列使用的 MongoDB 数据库独立出来( id 生成、单号生成序列),统一序列管理(适用于分布式系统),后期做成分布式,按分区来构造 id, 单号等。
3. 多处理中心独立出来,使用微服务架构重写处理中心,处理中心操作客户端使用 WPF ,处理服务采用微服务 API 。
4. 业务数据、基础数据还是使用现有数据库(于当前业务不冲突,前期减少工作量),暂时不需要为每个服务用单独的数据库
5. 使用 Redis 做缓存,现有系统缓存使用 MongoDB 做全局缓存,每个 Web 系统使用一个全局静态属性做系统缓存数据,使用微服务后这种模式会导致每个服务都有一个静态属性的内存缓存,导致内存暴增,也不利于缓存的统一管理,而 Redis 是内存型数据库,速度快,同一个处理中心缓存统一管理。
6. 使用 MQ 分离出日志处理(分离影响运行效率的组件,使用队列来处理),日志文件不再保存在当前系统目录先,独立出一个日志处理程序。(后续再做升级、重写一份到 MQ 处理日志的帮助类, MQ 暂定 ActiveMQ )
7. 客户端升级至 .net framework 4.5或以上, 能使用异步方法的地方尽量使用异步来处理,提升处理性能。
多处理中心微服务架构图
4. 技术选型
目前市面上使用的微服务框架主要有 Spring Cloud 、 Dubbo 、 Service Fabric 、 Steeltoe OSS
Spring Cloud :一整套的微服务框架集合,相当于一个全家桶,集成了微服务所需的所有组件,使用 HTTP 协议通信, Spring Cloud 本身不是一个框架,是一个统一了各个组件版本的集合,国内使用的还算比较多,且文档资料比较多。
Dubbo: 阿里巴巴开源的一款分布式服务治理框架,支持 dubbo 、 rmi 、 hessian 、 http 、 webservice 、 thrift 、 redis 协议,但作为一个微服务框架还需要整合其他组件,国家中文资料较多,
Service Fabric :微软开源的一个微服务框架,使用 C++ 开发,目前资料比较少
Steeltoe OSS :一款 .net 的开源微服务框架,兼容 Spring Cloud 的服务注册。
还有一些其他的框架,如 Surging (资料较少,不是完整的一套框架), Ocelot ( .net core 平台的 API 网关)
综合比较发现没有一个纯 .net 下的比较好的解决方案,最终方案定为: Spring Cloud ( java 平台) +Steeltoe OSS ( .net core 平台)
1. 服务治理
微服务框架: Spring Cloud, 版本 Finchley.SR1 (一个开源的 java 的微服务开发组件集合)
注册中心组件: Eureka Server
API 网关: Zuul
断路器: Hystrix
配置中心: Apollo ( 携程开源的 java 写的配置中心阿波罗,有 java 及 .net 的客户端 )
2. 服务提供者
使用 .net core 2.1 web api 来开发
服务注册( Eureka 客户端): Pivotal.Discovery.Client ( Steeltoe 的一个服务注册组件, .net 开源框架)
3. 基础框架
缓存: Redis
日志: MQ 处理
ORM : Dapper
客户端: WPF
ID 及增长序列存储: MongoDB
4. DotNet 开发环境
IDE: Visual Studio 2017 最新版本
web API:.net core 2.1
5. Java 开发环境
IDE:intellij idea 2018 最新版本
JDK : 1.8
Maven : 3.3.9
Spring Boot : 2.0.4.RELEASE
Spring Cloud : Finchley.SR1
如果你现在在JAVA这条路上挣扎,也想在IT行业拿高薪,可以参加我们的训练营课程,选择最适合自己的课程学习,技术大牛亲授,7个月后,进入名企拿高薪。我们的课程内容有:Java工程化、高性能及分布式、高性能、深入浅出。高架构。性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点。如果你想拿高薪的,想学习的,想就业前景好的,想跟别人竞争能取得优势的,想进阿里面试但担心面试不过的,你都可以来,q群号为:779792048
注:加群要求
1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加。
2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。
3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加。
4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。
5.阿里Java高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!