惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
小众软件
小众软件
Last Week in AI
Last Week in AI
月光博客
月光博客
博客园 - 聂微东
Recent Announcements
Recent Announcements
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
云风的 BLOG
云风的 BLOG
量子位
N
Netflix TechBlog - Medium
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
博客园 - 司徒正美
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
Google DeepMind News
Google DeepMind News
宝玉的分享
宝玉的分享

浮华生

Elasticsearch 检索性能优化 - 浮华生 舆情监控系统综述 - 浮华生 2024 半年度总结 - 浮华生 2023 年终总结 - 浮华生 异地机器组网方案 - 浮华生 Kubernetes 部署 Elasticsearch 和 Kibana - 浮华生 2022 年终总结 - 浮华生 RabbitMQ connection channel 的关系 - 浮华生 Kafka Java 客户端 Producer 原理分析 - 浮华生 RabbitMQ 和 Kafka 应用原理简单对比 - 浮华生 阿里云 OpenSearch 介绍 - 浮华生 Golang Array 和 Slice 区别 - 浮华生 Mac OS 下打造 golang nvim 编程环境之基础配置 - 浮华生 电商搜索技术总结 - 浮华生 电商搜索业务总结 - 浮华生 2021 年终总结 - 浮华生 Cypress 实践总结 - 浮华生 年终总结 - 浮华生 关于我 - 浮华生 使用 cucumber 进行行为驱动开发(BDD) - 浮华生 微服务应用集成 SpringCloud 步骤 - 浮华生 电商搜索数据同步方案 - 浮华生 通过一道数值转换题重温计算机补码 - 浮华生 macOS 系统推荐的一些软件 - 浮华生 DevOps 实施规划(持续更新) - 浮华生 rabbitmq 如何提高可靠性并保证消费端幂等 - 浮华生 AMQ Model总结 - 浮华生 结对编程 - 浮华生 RSocket 介绍 - 浮华生 面向对象的理解 - 浮华生
谈谈微服务 - 浮华生
浮华生 · 2017-11-25 · via 浮华生

什么是微服务

微服务是一些协同工作的小而自治的服务。

发展历史

微服务是应运而生,它不是谁发明的,而是现实社会总结出来的一种模式。

特性

我们可以把微服务看成一种细粒度的架构。当我们参与大型项目构建时会考虑到使用模块化的思想尽可能减少模块间的依赖,但这些模块间的界限很难维护,模块间相似的代码会有很多,这就增加了修复bug的难度。 在单一系统内,通常会创建一些抽象层或者模块来保证代码的内聚性,从而避免这个问题。内聚性是指将相关代码放在一起。内聚性在微服务架构里占有非常重要的地位。 微服务将这个理念应用到独立服务器上,根据业务的边界来确定服务的边界,这样就能确定某个功能放哪里。 微服务很小,专注于做好一件事 自治性:一个为服务就是一个独立的实体。他可以独立的部署在PAAS(Platform As A Service ,平台及服务)上,亦可以作为一个操作系统进程存在。 服务会暴露出API(Application Programming Interface,应用编程接口),然后服务之间通过这些API进行通信

好处:

  • 技术异构型:我们可以使用多种语言来编写程序,只需要保持相同API即可。
  • 弹性:当一个组件不可用时并不会导致级联故障。
  • 扩展:以前一整套系统只能被当做一个整体来进行扩展,需要花费大量的时间精力去进行整个系统的代码修改,在使用微服务的系统里,我们只需要对想扩展的那个服务进行扩展
  • 简化部署:使用微服务架构的系统不会像原来那样,每次更新都需要把整个项目重新部署一次,因为此时每个服务都是独立的,我们只需要把修改过代码的服务部署上去即可,有问题也只是这单个的服务,我们可以进行快速发现以及回滚。
  • 与组织结构相匹配:一个团队或者小组专门负责一个服务,维护一个代码库。
  • 可组合性:我们应该做到每个服务都是可重复使用的,根据客户需求对不同服务进行拼接组装。
  • 可替代性的优化:当你进入一个公司时,可能要面临重构上任程序员留下来的系统,很有可能让你眼花缭乱心惊胆战。当使用微服务时,每个服务只有很少的代码,重写或者移除一个或者多个服务也变得容易。