- java开发面试问答----基础篇
- java开发面试问答----多线程篇
- java开发面试问答----spring框架及数据库缓存篇
- java开发面试问答----设计模式篇
- java开发面试问答----分布式篇
- java开发面试问答----微服务篇
- java开发面试问答----devops篇
RPC
- rpc即远程过程调用,它的出现是为了解决分布式系统中多个应用之间的调用关系,使调用其他应用的方法的过程像本地调用一样方便。
- rpc和restful的区别:rpc是一种编程模型,一种调用思想,而restful是具体的一种实现方式,通常rpc设计时是面向过程的,而restful是结合了http动词面向资源的,rpc的底层实现可以使用restful封装
- rpc和rmi的区别:同样,rmi只是java的一种访问远程对象协议,rpc可以使用rmi来实现
- rpc的实现可以用以下模型来解释
dubbo实现原理
dubbo是阿里巴巴开源的分布式服务框架,采用层次结构设计,共分为10层
- 服务接口层:服务提供方根据业务需求编写接口和实现,服务调用方使用接口调用服务
- 配置层:配置参数
- 服务代理层:stub,根据服务接口生成的本地代理
- 服务注册层:封装服务地址的注册和发现
- 集群层:封装多个服务提供者的路由及负载均衡
- 监控层:监控服务的调用次数和耗时
- 远程调用层:封装rpc,Protocol是服务域,它是Invoker暴露和引用的主功能入口,它负责Invoker的生命周期管理。Invoker是实体域,它是Dubbo的核心模型,其它模型都向它靠扰,或转换成它,它代表一个可执行体,可向它发起invoke调用。
- 信息交换层:封装请求响应模式,同步转异步
- 网络传输层:抽象mina和netty为统一接口
- 序列化层:封装的序列化方式和工具
怎么理解RESTful
rest的意思是表现层状态转换,即uri表示资源,http的操作方法表示行为:post表示增加,delete表示删除,put表示修改,get表示查询,返回的状态码表示结果,restful就是具有rest风格的架构规范。
什么是SOA,SOA和微服务的区别是什么
- soa的意思是面向服务架构,他的思想是单个系统相对独立,通过网络进行相互通信并对外提供整体服务,谈到soa一般都会说esb企业服务总线,esb的作用就在于集成不同协议的不同服务,做消息转发,路由的工作。
- 而微服务的理念是soa的升华,他是彻底的组件化和服务化,将soa中的单个系统拆成多个提供单一服务的组件并去除esb,借由docker技术实现快速部署。
服务治理
说说你们是怎么实现服务治理的
谈服务治理要从几个方面来说
- 服务的注册和发现,常用的dubbo,spring cloud套件
- 服务的限流和熔断,dubbo自带了降级功能,而spring cloud套件支持降级和熔断,当然也可以使用单独的sentinel
- 服务的监控,dubbo和spring cloud套件都有服务的监控功能,如果要用到完整的链路追踪可以使用skywalking
说说service mesh和serverless
- service mesh 服务网格是微服务框架的进一步进化,他的理念是使用边车模式将服务治理和业务实现完全解耦合,将与业务代码无关的服务注册,限流,安全验证等全部抽离到proxy中。第一代Service Mesh的代表为Linkerd和Envoy,主要专注于做proxy,而第二代Service Mesh主要改进集中在更加强大的控制面功能,典型代表有Istio和Conduit。
- Istio 主要架构由四部分组成
- Envoy继续扮演边车的角色,实现服务注册发现,限流等功能
- Mixer接收Envoy的流量,前置条件检查(ACL白名单),遥测上报(日志监控),配额管理(解决资源冲突)
- Pilot相当于envoy的超级边车,负责envoy的生命周期,管理envoy路由,熔断限流等策略
- Istio-Auth则负责服务的安全验证,流量加密和证书管理
- serverless 无服务器架构,意思并不是不需要服务器,而是开发人员不需要关心代码在服务器上的运行情况,可以理解成将原来的整个应用拆分成一个个执行不同任务的函数,这样可以更细粒度的控制业务运行情况,提供FaaS函数即服务,serverless的好处在于
- 可以极大缩短交付时间,因为只需要交付相应的函数
- 可以灵活伸缩,不用再担心容量问题
- 降低成本,可以不用关心基础设置的管理