微服务架构体系适合用来解决大型系统带来的复制性
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,持续集成,持续部署。