编码能力最为重要,编码能力最难培养,编码能力是慢慢积累的!
1.网站架构演变过程:
传统架构(单点应用){其实就是SSH或者SSM架构}=》分布式架构(以项目进行拆分)=》SOA架构(面向服务架构)=》微服务架构
1.1单点应用,把整个业务模块都会在一个项目进行开发,分为MVC架构,会拆分控制层,业务逻辑层以及数据访问层;
一般只适合一个人或者小团队开发
缺点:耦合度太高,一旦某个模块导致服务不可用,可能会影响到其它模块.比如查询崩溃了会影响到正在登录的人.
1.2分布式架构基于传统架构演变过来的,将传统的项目以项目进行拆分成多个子项目,比如拆分成会员项目/订单项目/支付项目/优惠劵等.每个项目中都有自己独立的数据库/独立redis等.
项目表达意思:包含业务逻辑层和视图层,项目包含:前台项目(提供给用户)和后台项目(维护管理)
服务表达意思:只包含业务逻辑层,没有视图层
中台(没有界面):管理系统,就是后台管理系统
maven聚合项目是不是分布式项目:最终区别是打的jar或者war,是不是一个,多个jvm互相通信!
1.3 SOA(Service Oriented Architecture)架构
SOA代表面向服务架构,俗称服务化,可以理解为面向于业务逻辑层.将共同的业务代码进行抽取出来的,提供给其它接口进行 调用,服务与服务之间通信采用rpc远程调用技术.
服务概念:将共同的业务逻辑进行拆分,拆分成独立的项目进行部署.没有视图层
服务概念理解为: 接口.
RPC远程调用技术框架:HTTP client/springcloud/dubbo/grpc 核心底层socket技术或者netty实现.
SOA架构特点:底层基于SOAP或者ESB(消息总线)实现,底层使用HTTP或者Https协议
1.4微服务架构
1.4.1SOA架构缺点:
1.依赖与中心化服务发现机制
2.采用Http+XML传输协议,占用宽带
3.服务管理混乱,缺少服务管理和治理设施不完善。
1.4.2微服务架构模式
微服务架构从SOA架构演变过来的,比SOA架构粒度上更加精细。每个服务与服务之间互相不影响,每个服务必须独立部署(独立数据库、独立redis等),微服务架构更加轻量级,采用restful风格提供API,采用Http+Json格式,更加适用敏捷开发、快速迭代产品。
控制层与fegin客户端区别: 控制层控制页面跳转,fegin客户端调用接口
服务化功能本身在SOA这层已经实现,只不过微服务架构在单独服务层有进行细化服务。
会员服务在微服务又进行细分为:会员服务基本组件、会员联合SSO服务、会员积分服务
微服务架构与SOA架构区别:
1)微服务架构基于SOA架构演变过来,继承了SOA架构优点,在微服务架构中去除SOA架构中的ESB消息总线,采用http+json(restful)进行传输;
2)微服务架构比SOA架构粒度会更细,目的是提高效率;
3)SOA架构中可能存在数据库存储共享,微服务强调每个服务都是单独数据库,保证每个服务之间互不影响;
4)微服务架构更加适用敏捷开发、快速迭代产品。(第8节)
第九节 为什么要使用Springcloud框架
因为spring cloud是目前来说,是一套比较完整的微服务解决方案框架。不像其它rpc远程调用框架,只是解决某个微服务中的问题。可以把springcloud理解为一条龙微服务解决方案。微服务全家桶---springcloud比较完善。
服务治理:阿里巴巴的dubbo和当当网在其基础上拓展的dubbox、Eureka、apache的consul等。
分布式配置中心:百度的disconf、netfix的Archaius、360的QConf、SpringCloud的config、携程的阿波罗等。
分布式任务:xxl-job、elastic-job、springcloud的task等。
服务跟踪:京东的hyra、springcloud的sleuth等。
如果学习其它其它微服务框架,需要整合其它框架帮你解决微服务问题。
第十节 spring cloud微服务框架简介
1.spring cloud是基于spring boot基础之上开发的微服务框架,是一套完整的微服务解决方案框架,其内容包含服务治理、注册中心、配置管理、断路器、智能路由、微代理、控制总线、全局锁、分布式会话等。
springcloud包含众多的子项目
springcloud config 分布式配置中心
springcloud netflix核心组件
Eureka:服务治理 注册中心
Hystrix 服务保护框架
Ribbon 客户端负载均衡器
Feign:基于ribbon和hystrix的声明式服务调用组件
Zuul:网关组件,提供智能路由、访问过滤等功能