技术架构—各类技术概念与区别答疑—(Java与大数据)

 微服务到底是个啥?

发展历程: 单体服务(发布就是一个war或jar)-——分布式服务(分布式环境下手动部署)

                   ——>微服务(全自动独立部署)

 服务:提供的业务功能

 重点在于对微的解释,但仅仅从微来理解还不够,干脆画个图总结下:

通信方式可以是Rest API 或 RPC


技术架构—各类技术概念与区别答疑—(Java与大数据)_第1张图片

概况起来就是:微服务组件——微服务间通信——最少配置管理 

 


详细的总结:


《=======================微服务 概念总结========================================》

  什么是微服务
  1. [微服务组件]
   一组独立小型服务
   每个小型服务独立运行与部署
   这些小型服务自由选择编程语言与采用不同的数据存储方式

  2.  [微服务组件间通信]:各服务之间采用轻量级通信方式通信(RPC)

  3.  [围绕业务功能]:采用最低限度的配置进行集中管理与全自动部署机制进行独立部署
  
  
  优缺点:
   优点:
   1.[微服务组件]: 易于开发与维护 ,启动较快,技术栈不受限制 ,按需伸缩  
                  
                  
   2.[微服务组件间通信]:    局部修改不影响其他微服务组件
   
   3.[围绕业务功能]:DevOps
   
   缺点:
   1.[微服务组件]:运维要求高,分布式的复杂性高,重复劳动
     (常用的工具包(Java版或C版的相同逻辑代码))
   2.[微服务组件间通信]:接口调整成本高(某个微服务模型修改导致其他调用者做出的接口调整)
   
   微服务设计原则:
   1.单一职责原则
   2.服务自治原则
   3.轻量级通信原则
   4.接口明确原则
   
   常用微服务开发框架:
   1.SpringCloud
   2.Dubbo --服务治理
   3.Dropwizard --单个微服务开发
   4.Consul
   
   怎么具体实践微服务
   要实际的应用微服务,需要解决以下四点问题:

   1、客户端如何访问这些服务
      动态代理 提供一个统一的服务访问口,解除微服务间的耦合,
      同时考虑单点故障或者性能的瓶颈的问题
   2、每个服务之间如何通信
      有两种方式、
        同步调用:
        ①REST(JAX-RS,Spring Boot)
        ②RPC(Thrift, Dubbo)
        异步消息调用(Kafka, Notify, MetaQ)

   3、如此多的服务,如何实现管理
       zkeeper等类似技术做服务注册信息的分布式管理

   4、服务挂了,如何解决?(备份方案,应急处理机制)
        ①重试机制
        ②限流
        ③熔断机制
        ④负载均衡
        ⑤降级(本地缓存)
        
   微服务开发模式:微服务敏捷开发。只要用户用得到,就先把这个服务挖出来。然后针对性的,快速确认业务需求,快速开发 迭代
   
   
   

你可能感兴趣的:(微服务)