Spring Cloud 里 Eureka 什么是微服务及微服务的特点

Stella981
• 阅读 558

1.什么是微服务/微服务的特点

单一职责: 微服务中的每一个服务都对应唯一的业务能力, 做到单一职责
微: 微服务的服务拆分粒度很小, 列如一个用户管理就可以作为一个服务, 每个服务虽小, 但五脏俱全
独立: 自治是说服务间相互独立, 互不干扰

  • 团队独立: 每个服务都是一个独立的开发团队, 人数不能过多
  • 技术独立: 每个服务都是面向服务, 提供Rest接口, 使用什么技术没有别人干涉
  • 前后端分离: 采用前后端分离开发, 提供统一Rest接口, 后端不用再为PC, 移动端开发不同接口
  • 数据库分离: 每个服务都是使自己的数据源
  • 部署独立:服务间虽然有调用, 但能做到服务重启不影响其他服务, 有利于持续
    集成和持续交付, 每个服务都是独立的组件, 可复用, 可替换 ,降低耦合,易维护,与集群 Docker服务

2.不适用Eureka注册中心的情况下,分布式必然面临哪些问题

服务管理

- 如何自动注册和发现服务
- 如何实现服务状态的监管
- 如何实现动态路由, 从而实现负载均衡

服务如何实现负载均衡
服务如何解决容灾问题
服务如何实现统一配置

什么是高可用? 分布式 集群 负载均衡?

高可用
就算是在极端环境下, 也可以正常提供服务, 哪怕是网坏了
如何使用高可用?
集群: (也就是说集群中的一些服务挂了, 也就可以继续正常提供服务)
分布式 , 集群 , 负载均衡的关系?
分布式: 把一个大项目, 根据业务需求拆分多个服务, 分布式开发, 最终部署的时候也就是分布式部署
集群: 把同一份代码 部署在N台服务器上
负载均衡: 把请求分摊到多台服务器上
集群之后, 必须负载均衡 想要负载均衡 ,必须集群.

3.Eureka的工作原理

  • Eureka : 就是服务注册中心(可以是一个集群), 对外暴露自己的地址
  • 提供者: 启动后向Eureka注册自己的信息(地址,提供服务)
  • 消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送消费者,并且定期更新
  • 心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态

4. 什么是服务注册

服务提供者在启动时,会向EurekaService发起一次请求,将自己注册到Eureka
注册中心去

5.什么是服务续约

在注册服务完成以后,服务提供者会维持一个心跳(每30秒定时向EurekaService发起请求), 告诉EurekaService “我还活着”. 这个我们称为服务的续约(renew)

6.什么是剔除

有些时候, 我们的服务提供方并不一定会正常下线, 可能因为内存溢出,网络故障等原因导致服务无法正常工作, EurekeService需要将这样的服务剔服务列表. 因为他会开启一个定时任务, 每隔60秒对所有失效的服务(超过90秒未响应)
进行剔除

7什么是自我保护

当一个服务未按时进行心跳续约时, 在生产环境下, 因为网络延迟等原因,此时就把服务剔除列表并不妥当,因为服务可能没有宕机, Eureka就会把当前实例的注册信息保护起来, 不予剔除, 生产环境下很有效, 保证了大多数服务依然可用

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
3年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
AWS国庆双重礼,仅限7天
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠。国庆双重礼,仅限7天$200美元AWS服务抵
Stella981 Stella981
3年前
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法参考文章:(1)Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.codeprj.com%2Fblo
Stella981 Stella981
3年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这