技术架构—各类技术概念与区别答疑—(Java与大数据)
微服务到底是个啥?
发展历程: 单体服务(发布就是一个war或jar)-——分布式服务(分布式环境下手动部署)
——>微服务(全自动独立部署)
服务:提供的业务功能
重点在于对微的解释,但仅仅从微来理解还不够,干脆画个图总结下:
通信方式可以是Rest API 或 RPC
概况起来就是:微服务组件——微服务间通信——最少配置管理
详细的总结:
《=======================微服务 概念总结========================================》什么是微服务
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、服务挂了,如何解决?(备份方案,应急处理机制)
①重试机制
②限流
③熔断机制
④负载均衡
⑤降级(本地缓存)
微服务开发模式:微服务敏捷开发。只要用户用得到,就先把这个服务挖出来。然后针对性的,快速确认业务需求,快速开发 迭代