微服务架构
第一种是集中式架构也是单块应用最常使用的架构模式.
第二种是分布式架构,最常见的应用是将一个大的任务拆分到不同的机器中进行计算,最终有一台服务器合并计算结果就是分布式架构的一个好的体现。
第三种就是微服务架构。
现实中遇到的问题
扩容困难
我们之前开发项目用的是虚拟机,每次上线项目需要加机器总会遇到资源不足的情况,还要走非常复杂工单审批流程,还要与运维人员不断PK,才能申请下来资源,整个流程冗长,机器受限于资源申请困难。
部署困难
每次上线采用专门的人进行布署,上线之前需要与上线人员沟通上线的环境,防止上线出错。
发布回滚困难
每次上线发现问题后,需要重新从svn主干上面进行代码编译,但是有时候会因为各种问题回滚失败,而且重新编译很耗时导致回滚缓慢。
适配新技术困难
如果打算在不同的模块采用不同的语言开发,或者想在架构中做技术升级都很困难或者不支持。
快速开发困难
项目中采用单体应用,里面集成了太多功能模块,无法快速进行功能开发并且很容易牵一发动全身。
测试困难
测试人员没有自动化测试框架,或者Mock系统,导致只能采用简单的人工测试流程,而且还经常发生功能覆盖不全面等问题。
学习困难
于是我们把项目中遇到上述问题的项目称为单体应用。
微服务的解决方案
微服务架构将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立的编译以及部署。并通过各自暴露的API接口相互通讯。它们彼此相互协作, 作为一个整体为用户提供功能,却可以独立的进行扩容。
微服务的基本概念
阿里云中型电商推荐架构
适合发展中电商公司快速搭建平台,例如电商网站/APP/电子商城,能轻松承受约5~30万的日均访问量
本架构能够解决:
云产品随时升级扩容
轻松应对高并发
负载均衡一键搭建随时灵活扩展
网站防DDos攻击
典型应用场景
全面覆盖微服务、消息、数据等基础技术解决方案,推荐搭配使用:
1、 消息队列MQ
消息队列(Message Queue,简称MQ)是企业级互联网架构的核心产品,服务于整个阿里巴巴集团已超过 10 年,经过阿里巴巴交易核心链路反复打磨与历年双十一购物狂欢节的严苛考验,是一个真正具备低延迟、高并发、高可用、高可靠,可支撑万亿级数据洪峰的分布式消息中间件。
2、 云服务器 ECS
云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新
3、 RDS云数据库 MySQL 版
MySQL 是全球最受欢迎的开源数据库之一,作为开源软件组合 LAMP(Linux + Apache + MySQL + Perl/PHP/Python)中的重要一环,广泛应用于各类应用场景。
4、 EDAS
EDAS 是一个围绕应用和微服务的PaaS平台,提供多样的应用发布和轻量级微服务解决方案,帮助用户解决在应用和服务管理过程中监控、诊断和高可用运维问题;提供Dubbo的运行环境
5、 对象存储OSS
海量、安全、低成本、高可靠的云存储服务,提供99.999999999%的数据可靠性。使用RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本。
EDAS典型应用场景
LegendShop微服务架构解决方案
两种方案对比
微服务拆分建议
相对于垂直结构,微服务的优势:更灵活,更适合迭代开发,是发展的趋势
缺点:维护成本较高