微服务之入门

 

1.什么是微服务?

微服务概念是由Martin Fowler(马丁·福勒)在2014年提出的, 他提出了微服务的标准,实现了技术统一和兼容性. 微服务是一种分布式系统解决方案,推动细粒度服务的使用,每个服务都可以独立运行, 且这些服务可以协同工作. 简单地说, 微服务将一个大型项目的各个业务代码,拆分成多个互不相干的小项目,而这些小项目专心的完成自己的功能,而且可以调用别的小项目的方法,从而完成整体功能

2.为什么需要微服务?

从服务器端程序的演进过程来说,

阶段一:静态服务器 

早期的服务器状态,安装好一些固定内容,让用户访问. 功能单一,如果不修改代码,内容是不会变的,只能做信息的呈现或输出

阶段二:普通动态服务器

网页中的数据可能来自数据库,数据库中的数据可以在后台中进行修改. 实现不修改页面代码,但是变化页面内容的效果, 因为有了数据库的支持,动态网站开始支持登录注册,增删改查功能

阶段三:以用户共享内容为主的互联网生态

随着互联网的普及,个人的社交需求提升出现了很多由用户贡献内容的网站微博,抖音,淘宝,大众点评或类似的网站

阶段四:微服务时代

随着用户的增加,各种并发的增高,要求我们的服务器在繁忙的情况下,也需要快速的做出响应用户体验必须保证,这样就要求我们的项目有下面三个目标高并发,高可用,高性能 .

高并发:很多人同时访问这个网站,这个网站不能失能

高可用:全年365天每天24小时随时可以访问,不能因为个别服务器的异常,导致整个项目瘫痪

高性能:当有用户访问时响应的速度要尽量的快,即使并发高,也要快速响应

3.关于微服务的个人理解

微服务通过将原本单个应用拆解为独立的子系统,降低了单个应用的复杂度,但整个系统的复杂度并没有因此下降,而且额外带来了单体应用没有的数据一致性,网络中断等问题即:  单体复杂度< <各个微服务复杂度+微服务间复杂度+基础设施复杂度

由于整个服务被分为几个独立的微服务,那么服务的切分与API设计是设计的重中之重,这对于架构师的能力要求极高.  通过高度自动化的基础设施,能够大幅降低微服务所带来额外复杂度,但整体复杂度仍比单体应用要高, 但微服务让开发超大型复杂项目的难度有效下降, 小项目,简单项目没必要做微服务.

4.微服务组成部分

  1. 服务描述: 服务名, 服务提供哪些信息, 服务的返回格式等, 常用的服务描述方式包括restful xml和idl
  2. 注册中心: 登记所有服务, 方便消费者调用时, 查找需要请求的地址, 过程: 1 服务提供者启动时, 根据配置文件向注册中心注册自己的服务 2 服务消费者在启动时, 根据配置文件中的服务信息向注册中心订阅服务 3 注册中心返回提供者提供的地址给消费者 4 当服务的提供者发生变化时, 注册中心将变更通知给消费者

  3. 服务框架: 获得请求地址后还有问题需要考虑 1 采用什么协议 tcp udp http 2 数据传输方式 同步 异步, 单链接or多路复用 3 压缩格式
  4. 服务监控: 1 指标收集, 每次一服务调用的耗时以及是否成功收集 2 数据处理 根据1收集的数据计算qps avgtime等 3 数据展示, 将处理的数据可视化展示, 用作服务监控和报警
  5. 服务追踪: 记录每个节点, 消费者发起调用前, 生成一个id, 请求时带着id, 提供者接收到请求后, 记录下这次的id, 然后处理请求, 如果提供者请求其他服务, 就再生成一个自己的id, 把这个id继续传递, 以此类推

  6. 服务治理 1 单击故障, 通过一定的策略进行单击摘除 2 单IDC故障, 自动切换故障IDC到正常IDC 3 依赖服务不可用, 熔断机制 还有自动扩缩容等

业务选型: rpc协议的性能要高于http. 性能要求较高的情况下可选用rpc, 但是当采用xml配置的时候, 耦合度比较高, 消费者和提供者的配置都要使用xml进行配置, 如果服务发生变化, 就要进行xml的修改 idl的服务端和客户端代码是自动生成的, idl文件难以维护, 返回值发生变更就要同步更新服务的消费者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值