架构设计---技术栈01

1、star模型的是哪几个单词的缩写,star具体内容是什么,为什么star能很好地考察候选人的能力?
   star模型:situation(情景) task(任务) action(行动) result(结果)
    定义:基于一种假设,根据候选人过去的行为表现可以预测将来的绩效表现。
           特定的场景或者环境完成某一任务所采取的行为和产生的结果,判断候选人的能力和素质。
  有效性:候选人所讲的行为事件离现在越近越能够预测未来的表现
              事件的复杂程度不同,它所预示的行为等级也就不同。
              行为出现的频次越多越能够代表候选人的能力和特性。
    素质冰山模型:
   知识、专业技能、综合能力、个性特征、动机、价值观。

2、RPC基本技术原理是什么?
   RpcClient:负责导入(import)远程接口的代理实现
   RpcServer:负责导出(export)远程接口
  1、调用代理RpcProxy,调用代理的方法,执行invoke
  2、调用代理RpcProxy的create方法,封装被代理类的属性,查找服务(服务发现技术),随机获取服务的地址,
      创建RpcClient,链接服务端,通过通信技术(netty)实现RPC代理HelloService接口
  3、RpcClient 向pipeline中序列化技术添加编码、解码,链接服务端,发送消息 ,用线程等待的方式决定
  4、RpcServer :Channel, 发布者,监听客户端的连接,接收到新的客户端请求,Processor,负责在服务端控制调用过程,         包括管理调用线程池、超时时间等

  5、RpcHandler 接收消息,处理消息,采用反射的技术调用实现类。


3、RPC和SOA有什么区别和联系?
  RPC是半成品的SOA框架,服务间依赖关系变得复杂,调用量,上线容易下线难,需要管理、监控。访问的安全策略如何制定。
  总之就是服务的治理。要解决这些问题,必须通过服务框架+ 服务治理来完成,单凭RPC框架无法解决服务治理问题。


4、SOA有哪些基本的核心功能?
  服务注册中心:管理服务的发布、通知,避免硬编码服务地址信息,实现服务动态发现,实现服务透明化调用。
  服务治理中心:一般包括服务治理Portal、服务监控、参数设置、服务报表等信息。
  服务监控:调用日志,性能监控、服务统计报表、告警
  服务路由:服务消费者通过服务名称,在服务列表中找到需要调用的服务地址列表
           透明化路由、负载均衡、本地路由优先策略、路由规则
  服务限流:资源成为瓶颈时,服务端和客户端的动态流控
          并发计数器法、漏桶算法、令牌桶算法
  服务调用:异步调用、同步调用、并行调用、泛化调用
  服务降级:服务降级场景:容错降级(Mock)、屏蔽降级(Switch)
  集群容错:
  编码解码:编码解码与通信协议是解耦的,同一种协议(eg:http)可能有多种编解码
          (json、protocol buffer、thrift等)形式;
  网络通信:三种模型:BIO、NIO、AIO 

                 Socket通信框架:Netty和Mina


  • 服务订阅发布 
  • 服务注册中心
  • 服务路由
  • 负载均衡
  • 集群容错
  • 服务调用
  • 服务降级
  • 服务多版本
  • 服务灰度发布 
  • 流量控制
  • 多协议 
  • 序列化


5、构建SOA中间件需要哪些基础知识?
  通信框架、
  序列化与反序列化
  协议栈

  参数传递


  • ZooKeeper
  • RPC
  • 并发编程 :线程池、多线程基础知识
  • 反射:反射用法:构建对象、动态执行方法、获取类的信息、获取对象属于哪个类、动态操作属性
  • 动态代理:了解静态代理和动态代理
  • 通信框架:三种模型:BIO、NIO、AIO;Socket通信框架:Netty、Mina
  • Spring
  • SOA功能特性
  • SOA服务治理
  • SOA性能和可靠性
  
6、服务注册中心有哪些重要的作用?
 实现透明化调用
 实现架构的伸缩性
 实现架构高性能
 实现分布式架构的重要基础

  zk是开源的分布式协调框架;

  Hbase、Kafka、Sole等知名项目是均使用zk;

  zk提供统一命名服务、配置管理、分布式锁等分布式基础服务;
  基于zk,实现集群管理、软负载、服务发布/订阅等功能;
  运用zk,实现服务注册中心:
  服务注册:SOA服务端启动服务,将服务提供者信息(服务名称、ip、port等信息)组成的znode路径写入zk;
  服务发现:服务消费方发起服务调用之前,先连接到zk;消费方对服务提供方节点路径注册监听器,并且获取服务提供方信息并且缓存到本地;
           发起调用时,调用方按照某种负载均衡算法,从本地服务缓存列表中选取某一个服务提供 方,对服务提供方发起调用;
  服务的自动下线:该机器与zk连接断掉后,该临时节点会被自动删除;同时触发服务消费方对服务提供方路径的监听器,消费方收到被删除提供方信息, 刷新本地提供方信息缓存,从缓存中删除下线的某个提供方信息;
  服务的自动扩容上线:触发消费方对服务提供方路径的监听器,消费方收到新增的服务方节点信息。


9、请讲讲dapper论文的主要内容,dappper有哪些核心的要素,各自的作用是什么?
  Trace 一次完整的跟踪叫trace,从请求到服务器开始,服务器返回response结束,跟踪每次rpc调用的耗时;
  span 在调用rpc服务中,产生一个span用来记录rpc接受到请求的时间,rpc返回请求的时间;
  annotations:基本标注列表,一个标注可以理解成span生命周期中重要时刻的数据快照,比如一个标注中一般包含发生时刻 (timestamp)、事件类型(value)、端点(endpoint)等信息;
  trace_id:用于标识一次完整的请求id; 
  span_id:当前这次调用span_id;
  parent_id:上层服务的调用span_id,最上层服务parent_id为null;
  annotations:用于标记的时间戳。在span的标记点,记录整个span时间段发生的事件。
  dapper实现点:当一个线程在处理跟踪控制路径的过程中,dapper把这次跟踪的上下文在ThreadLocal中进行存储。追踪上下文是一个小而且容易复制的容器,其中承载了Scan的属性,比如跟踪ID和span ID;


10、请讲讲常见的分布式监控中间件的架构
  典型的分布式监控架构
  鹰眼Storm集群 从 日志收集agent(带有鹰眼埋点的中间件写入日志文件,日志收集agent读取日志文件)或者应用集群 实时收取日志;
  鹰眼Storm集群把全量日志 写入 HDFS 《--》 Hadoop集群,MapRedure处理,把计算结果写入HDFS;
  鹰眼Storm集群把实时日志写入Hbase;
  鹰眼服务器读取原始日志与分析结果,数据输出与展现。
  


11、分布式监控中间件有哪些应用,可以解决哪些实际的问题?


  • Zipkin(twitter)
  • 鹰眼(淘宝)
  • Watchman(新浪)
  • Hydra、CallGraph(京东)
  • CAT(大众点评)
  • CAL(eBay)
  调用链跟踪:
  • 排查前端某页面响应很慢或报错的原因
  • 查看这个页面的调用链,定位瓶颈点、故障点
  • 应用在日志中打印当前上下文的调用链 ID,关联异常堆栈日志 
  • 关联系统资源数据,如 load、内存、JVM 状况
  • 实时跟踪当前客户端的所有请求的调用链
  • 了解每个请求背后的应用间交互过程
  调用路径分析: 
  • 应用的关键路径:应用被调用得最多的入口、服务是哪些;突出关键:热点、耗时瓶颈、易故障点、变化点;主要用于容量评估、性能优化
  • 验证调用路径是否符合预期:衡量网络调用的均衡性;调用在单元内的路由正确性
  • 实时分析前端入口的容量走势:大促链路监控和高峰预警   

猜你喜欢

转载自blog.csdn.net/qq_15001229/article/details/79596638