微服务架构技术解决方案

微服务架构体系适合用来解决大型系统带来的复制性

2019/10/11 下午4:23:13

(引用自原文:https://mp.weixin.qq.com/s/ezJiDoPcGcwKzj2mox6gZQ

 

引言

本文主要介绍一物一码系统架构,它是基于微服务架构搭建现代系统,将大粒度的功能模块分解成许多小粒度服务来为系统提供功能,使用 .NET Core 技术实现跨平台。随着业务的发展软件功能越来越复杂,系统越来越庞大,用传统的单体式架构面临具大挑战,运维成本日益增加,开发与维护都遇到瓶颈。微服务架构体系适合用来解决大型系统带来的复制性。

 

模块

微服务架构目前落地功能:

1、微溯源

2、营销(红包、优惠券、积分等)

3、标识码管理

a、双二位码支持(溯源码和营销码)

b、高发码能力(已实现 26秒/20万码的速率)

c、二维码格式工具

4、防窜货

 

架构图

1、支持多客户端(手机端,电脑端,其他移动设备)访问系统资源。

2、客户端访问系统资源通过 API 网关进行路由。

3、安全中心负责用户单点登录、身份认证以及授权。

4、各个微服务注册到安全中心后成为受保护资源。

5、各个微服务之间公网通讯需要携带安全令牌。

6、各个微服务之间内网通讯通过 RPC 远程调用方式。

7、支持负载均衡,节点灵活扩展性,高可用性。


优点

微服务架构区别与单体式架构,它更适合用于构建复杂的应用。微服务架构将复杂系统的分解成小的、互相连接的微服务,微服务之间通过 RPC 或者 API 进行通讯。

 

自治能力

一个微服务一般完成某个特定的功能,比如,商品管理、标识码管理等。每个微服务都有自己的业务逻辑和适配器,一般我们将微服务开发为自治地拥有自己的三层结构:API + 业务逻辑层 + 数据访问层。

 

技术选型灵活

每个微服务开发团队可以根据需要选择技术栈,比如,微服务开发团队A对.NET技术掌握的比较好可以选择基于C#或VB.NET来开发微服务;微服务开发团队B对Java技术比较熟悉则可以选择基于Java语言来开发微服务,等等。微服务负责实现的业务功能比较单一,需要对其用到的技术栈进行升级风险比较低,甚至完全可以用另一技术栈进行重构开发。

 

集成部署灵活

一个微服务可以部署到独立的服务器、Docker 容器甚至 VM 云。微服务架构适应基于 DevOps 开发流程来执行持续集成,持续部署,让开发过程变得更加敏捷。系统更新时再不需要将整个系统重新发布,而只需重新发布有变更的那些微服务。

 

伸缩性

一个微服务可以被很方便地部署到 5 台服务器升级到 10,比如, 二维码大数据微服务、活动营销服务、抢红包服务等,这些微服务需要提供大数据量支持、高并发支持,这些微服务可以部署更多节点,节点之间协作、分担请求负荷以为系统提供高吞吐能力。

 

高可用性

系统介入负载均衡将微服务编排为具有高可用的能力。某些微服务坏掉时不至于导致整个大系统无法使用,部分节点宕机功能仍能处于可用状态。比如,扫码溯源、活动抢红包等业务就极需微服务提供可靠、稳定以及高可用的能力。

 

SPA

1、现代前端框架

2、基于 Vue 框架开发 SPA 单页应用。

3、渐进式 JS 框架。

4、应对大型应用。

5、易用、灵活、高效。

 

 

部署

1、系统可以在多种操作系统上运行。

2、Linux 云服务器或 Windows 服务器。

3、支持部署到私有服务器和云端。

4、微服务集群。

5、负载均衡。

6、CI/CD,持续集成,持续部署。