《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
2014年,Martin Fowler 与 James Lewis共同提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的行程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用HTTP API 通讯。同时服务会使用最小的规模的集中管理 (例如 Docker) 能力,服务可以用不同的编程语言与数据库等元件实作。
它以具备单一责任与功能的软件单元为基础,每个服务都有自己的独立进程,它们通过模块的方法将它们进行组合,构成大型复杂的应用程序,每个独立运行的进程可以采用不同的编程语言实现,同时它们之间采用轻量级的通讯方式(HTTP API)实现各个服务之间的通信。这些服务可以被独立部署,同时它们都是围绕着业务功能进行构建的。
如果可以进行类比的话微服务就像一个人身体当中的各个器官,而人就是一个复杂的系统平台。每个器官都各司其职,完成自己的使命,如胃负责消化食物、肝部负责解毒、肾负责生成尿液、排泄代谢废物的功能等等。正是因为各个器官的相互协作,才构成人这个复杂系统。
2、微服务带来的问题
(1)运维复杂性
大量微服务构成庞大的分布式应用,这些微服务分布在多台服务器中,当分布式系统较为复杂时,所带来的软件运维的人力物力成本的提高。
(2)数据一致性
由于微服务的大多数进行了分布式部署,那么分布在各个服务器中的数据如何保证一致性成为了难题;
(3)分布式系统的复杂性
各个微服务可以独立部署,那么在分布式环境下,接口调用、日志追踪、分布式事务以及异步信息等带来的复杂性更高。
分布式架构示意图所示:
SpringCloud是Java开发分布式系统的开发套件,对分布式系统中需要的各种组件进行了封装。开发人员可以方便的以此作为基础进行开发,方便的构建分布式服务。主要提供了服务治理、断路器、控制总线、负载均衡等等,主要包括以下几个组件:
(1)SpringCloud Eureka---------------服务治理(服务自动化治理与发现)
SpringCloud Ribbon---------------客户端负载均衡
负载均衡是分布式系统中实现高可用、缓解请求压力以及服务能力扩容的重要手段。
SpringCloud Hystrix---------------断路器
服务容错保护,在微服务架构中,会包含很多种微服务,当其中的某个微服务发生异常时,如果有其他服务以来此微服务,那么可能胡造成业务链路的中断,影响平台的稳定运行。所以我们需要一种保护机制来保证系统的稳定性。
断路器的示例如下图所示:
图片来自于网络
SpringCloud Config---------------分布式配置服务
主要用于福分布式系统中的各个微服务进行集中式的配置支持,实现了对于服务端与客户端中环境变量与属性配置的抽象映射。
SpringCloud Zuul---------------API网关服务
最后
即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!
我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:
Dubbo面试专题
JVM面试专题
Java并发面试专题
Kafka面试专题
MongDB面试专题
MyBatis面试专题
MySQL面试专题
Netty面试专题
RabbitMQ面试专题
Redis面试专题
Spring Cloud面试专题
SpringBoot面试专题
zookeeper面试专题
常见面试算法题汇总专题
计算机网络基础专题
设计模式专题
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
式专题**
[外链图片转存中…(img-5e8nQLhV-1714761125415)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!