网站架构演变过程
1、传统架构模式(单点应用)
一般只适合一个人或者是小团队开发
缺点:耦合度太高,一旦某个模块出问题,可能会影响整个服务不可用
2、分布式架构模式(对项目进行拆分)
由传统架构演变而来,将项目以项目的模块的方式进行拆分,分成n多个子项目。
比如商城服务,拆分成:会员项目、订单项目、支付项目、优惠券项目、猜你喜欢项目…等,每个项目都有自己独立的数据库、redis。
和传统架构的区别:
项目粒度分的更加精细,适合于互联网公司开发,耦合度降低。
3、SOA架构(面向服务架构)
SOA是基于分布式架构演变而来的。SOA架构代表面向服务架构,可以理解为将用户显示层和业务逻辑层分隔开,将共同的业务代码进行抽取出来,提供给其他接口进行调用,服务与服务直接采用 RPC远程调用技术进行通信。
SOA架构缺点:
- 依赖与中心化服务发现机制
- 因为SOA架构采用SOAP协议(Http+Xml),因为XML传输协议比较占用带宽, 整个XML报文中有非常大的冗余数据,所以在微服务架构中以json轻量级方式替代 xml 报文传输。
- 服务管理非常混乱,缺少服务管理和治理设施不完善。
服务和项目的区别:
- 项目:包含业务逻辑层和视图层,项目包含:前台项目(提供给用户)和后台项目(维护管理)
- 服务:只包含业务逻辑层,没有视图层
4、微服务架构
微服务架构是由SOA架构演变而来,比SOA架构上粒度更加进行精细。让专业的人 做专业的事情(更加专注),目的是为了提高效率。每个服务与服务之间互不影响,每个服务必须独立部署(具有独立的数据库、独立的redis等),微服务架构更加体现轻量级,采用 resttful 风格提供API,也就是使用Http协议+JSON格式进行传输,更加轻巧,更加适合于互联网公司敏捷开发、快速迭代产品。
什么是微服务
微服务(Microservice)这个概念是2012年出现的,作为加快Web和移动应用程序开发进程的一种方法,2014年开始受到各方的关注,而2015年,可以说是微服务的元年;
微服务架构(MicroServicesArchitecture)是近几年来软件架构领域出现的高频词汇,它是基于传统的SOA架构演进而来的一种架构模。其提倡将传统的单体架构或分布式架构中的单体应用程序和服务划分成更小粒度的服务,这种服务我们称之为微服务(Microservices)。这种服务独立运行在独立的进程中并与其它的进程相隔离,服务于服务之间通常采用基于Http的通信协议构建的RestFulAPI进行通信,每个微服务都围绕着具体的业务,能独立的开发,构建,发布和部署到类生产环境和生产环境,而不影响其它的依赖业务。
开发微服务有2套技术栈
-
Dubbo(阿里开源的微服务框架) + ZooKeeper(注册中心)
-
SpringCloud(微服务框架) + Euraka(注册中心) 目前流行
SpringCloud是什么
为什么要使用SpringCloud
SpringCloud,基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。
SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等,它们都可以用SpringBoot的开发风格做到一键启动和部署。
SpringCloud = 分布式微服务架构下的一战式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶。
微服务全家桶——SpringCloud比较完善,整合了 分布式配置中心,分布式锁,分布式跟踪,分布式服务治理,分布式任务调度平台等等多种功能。
如果使用其他微服务框架,还需要解决中间整合时出现的各种不兼容不匹配问题。
SpringCloud 相关资料
官网文档:http://projects.spring.io/spring-cloud/
中文版的组件说明:https://springcloud.cc/spring-cloud-netflix.html
开发的API说明:
- 英文版:http://cloud.spring.io/spring-cloud-static/Dalston.SR1/
- 中文版:https://springcloud.cc/spring-cloud-dalston.html
springcloud中国社区:http://springcloud.cn
springcloud中文文档及优质项目:http://springcloud.cc
springCloud 全景图