1.服务架构有哪些?
微服务架构与传统单体架构
2.单体架构的三层模型是什么?
表示层、业务逻辑层、数据访问层
表示层 网页UI
数据访问层 操作数据库
3.J2EE就是单体架构,把所有代码打包成war包,部署在tomcat jetty等serlet容器。
4.J2ME、J2SE、J2EE
J2ME 适用小型设备、智能卡
J2SE 适用于桌面应用
J2EE 适用于服务器应用
5.微服务架构与单体架构对比
单体架构耦合性强,测试难度大。
业务复杂后开发难度大,新人难接手。
高并发处理能力有限
6.单体架构演进-应用服务器集群 负载均衡
负载均衡:单体应用进行集群分布
缓存服务器
文件服务器
数据库读写分离
7.微服务特点
独立进程的服务,服务之间通过Http协议通信RestFul API
服务集中管理
可以使用不同的开发语言,数据库
数据格式:xml、json、protobuf序列化(二进制数据)
按业务划分微服务
8.非关系型数据库有哪些?
mongdb redis
9.微服务必须自动化部署
分布式部署 git-maven-jenkins-docker-k8s
10.微服务管理
服务数量多,需要集中化管理。
Spring Cloud 采用Eureka来注册和发现服务。
集中管理框架:Zookeeper/Consul
11.分布式系统数据一致性困难
12.熔断的概念?
因为微服务之间可能相互依赖,可能导致整个系统不可用,就是“雪崩效应”。
为了防止此类事件,就必须采取相应措施,比如“熔断机制”。
请求失败达到一定次数,服务就开启熔断器,不进行业务操作,快速失败。不会出现大量线程阻塞,
影响其他服务,只会使该服务和依赖该服务的服务无法使用,其他服务正常使用。
13.CAP理论
微服务不可能同时满足“一致性”、“可用性”、“分区容错性”。
14.单体架构可以通过Transactional、数据库本身的事务来控制
15.微服务框架事务控制方式
两阶段提交,1服务A和服务B 事务协调器,2 都成功才提交,有一个失败都回滚。
2阶段有可能失败,因此1阶段需要记录日志
16.微服务框架有
Spring的SpringCloud
Google的Kubernetes
17.微服务容器与单体框架容器
单体:tomcat、jettry等serlet容器
微服务:Docker容器
18.DevOps是微服务一种部署手段或理念。
19.随着业务发展用户增加,有哪些措施?
读写分离、加缓存、加负载均衡服务器、应用集群化部署。
再发展,考虑分布式系统,微服务架构。
20.微服务架构三大难题?
故障的传播性:熔断器
服务的划分:按业务划分难度大,老系统拆分困难。领域驱动
分布式事务:两阶段提交或者三阶段提交。不管哪种都存在事务失败可能性,导致数据不一致,靠人工恢复数据。
21.微服务的主要功能
服务的注册喝发现
负载均衡
服务的容错
服务网关
服务配置统一管理
链路跟踪
实时日志
二、springcloud
1.springcloud介绍
springcloud是基于springboot的
springboot是web框架,简化开发喝部署的过程。
springcloud是通过包装其他技术框架来实现的,例如开源的Netflix OSS组件
2.spring cloud核心组件
服务注册发现Eureka
熔断组件 Hystrix
负载均衡组件Ribbon
路由网关Zuul
3.springboot三大特点
自动配置、起步依赖、Actuator对运行状态的监控
4.什么是springboot自动配置、起步依赖
自动配置就是程序需要什么,springboot就会装配什么。例如pom中引入了Feign依赖,springboot就会自动引入默认的Feign所需要的Bean。
起步依赖:以前添加项目依赖的时候,需要选择版本,解决版本冲突,例如springmvc需要引入spring-core、spring-web、spring-webmvc等依赖,
springboot起步依赖只需添加spring-boot-starter-web,就会自动引入springmvc相关的依赖。
自动配置、起步依赖带来的问题:开发者不知道程序注入了哪些bean
springboot提供了Actuator组件,对程序运行状态的监控。