微服务随想

微服务随想

Intro

在如今微服务的思想和架构流行的今天,以及结合最近在公司实施的微服务化,想谈谈自己对微服务的理解及看法,可能并不太对,如果你觉得哪些有问题,欢迎指出,一起探讨学习。

下面我将从微服务的三个层面去探讨

  1. 什么是微服务(What)
  2. 为什么要微服务(Why)
  3. 微服务化怎么实施(How)

什么是微服务

在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微 狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来 只需要2个披萨就够了 )。 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。

微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是 HTTP REST API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务可以使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。

为什么要微服务

从系统及应用程序的角度来说,起初大部分应用都是单体应用,所有的代码及功能都糅合在一起,随着系统的逐渐变大变得复杂,单体应用的部署和具体的功能模块依赖程,比较严重,相互影响较大,所以到后面通常会引入服务化的概念,将不同的模块拆成不同的服务来进行解耦和降低依赖,提高部署的灵活性。首先被应用的也就是 SOA(Service Oriented Architecture) 架构模式,SOA 架构模式下多有 ESB(Enterprise Service Bus) ,而 ESB 通常与某种语言/某种技术栈是强绑定的,也就决定了 SOA 模式下的开发语言/技术框架选择的限制。之后微服务开始出现在人们的视野之中,微服务的出现使得各个服务之间可以使用不同的技术栈,这对于使用不同语言的技术栈的开发人员来说是一个福音,从整体应用的角度来看,不需要再关注是什么样的语言与技术栈的实现,另外对于大多数互联网应用来说,应用程序的弹性扩展也很重要,微服务化同样使得弹性扩展变得方便简单。

单体应用架构的问题

  1. 应用各模块耦合严重,复杂性高
  2. 部署时间长,开发调试体验差效率低
  3. 应用具体的模块弹性伸缩比较困难
  4. 系统重构与技术创新困难

SOA 存在的问题

  1. 抽取的服务的粒度过大,系统与服务之间还有一定程度的耦合
  2. 对 ESB 比较依赖
  3. 技术栈相对固定,技术选型受限

微服务的优缺点

  • 优点

    1. 各模块耦合程度低
    2. 服务自治
    3. 按需伸缩比较简单
    4. 技术栈选择不受限,各个服务相互独立
    5. 发布部署简单,启动速度快
  • 缺点
    1. 运维成本比较高
    2. 分布式环境复杂

怎么实施微服务

  1. 微服务整体架构规划,微服务的拆分
  2. CI/CD 建设
  3. 系统监控/报警
  4. Api网关
  5. 统一的身份认证/授权
  6. 配置中心
  7. 分布式调用监控
  8. 注册中心/服务发现/负载均衡

Reference

Contact

后续会展开介绍如果进行具体的实施

Contact me: [email protected]

原文地址:https://www.cnblogs.com/weihanli/p/microservice-overview.html

时间: 2024-10-13 18:49:22

微服务随想的相关文章

用友iuap云运维平台支持基于K8s的微服务架构

什么是微服务架构? 微服务(MicroServices)架构是当前互联网业界的一个技术热点,业内各公司也都纷纷开展微服务化体系建设.微服务架构的本质,是用一些功能比较明确.业务比较精练的服务去解决更大.更实际的问题.该架构强调的一些准则:单一职责.协议轻量.进程隔离.数据分离.独立部署.按需伸缩. 什么是Kubernetes? Kubernetes是Google开源的容器集群管理系统,其提供应用部署.维护. 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,其主要功能:

初识微服务

1.背景 在云场景下,突变已经成为一种常态. 突变包括3个情形: 1. 业务突变 2. 流量突变 3. 应用故障 微服务能够敏捷应对以上情形. 2. 什么是微服务 微服务是一种架构模式,而并不是架构本身.微服务提倡围绕业务构建服务,把单体应用拆分成功能单一的服务,每个服务运行在一个进程中,服务间通过轻量级机制(restful)进行通信.并且可以独立进行开发,部署,运维. 3. 微服务缺点 1)  分布式系统本身的复杂性: 数据一致性等 2) 进程内通信变成网络通信,性能有损耗

创建微服务?请先回答这10个问题

原文地址:http://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=401654497&idx=1&sn=5cac9aa4ae113592e1513c1ff70ea917&scene=21#wechat_redirect 乍一看微服务似乎很容易构建,但是要真正构建微服务,要完成的工作可比在容器里运行一些代码,并在这些代码间使用HTTP请求进行通信,要多得多.在开发新的微服务之前--必须得在新服务部署到生产环境之前--你需要回答

使用Ratpack和Spring Boot打造高性能的JVM微服务应用

使用Ratpack和Spring Boot打造高性能的JVM微服务应用 这是我为InfoQ翻译的文章,原文地址:Build High Performance JVM Microservices with Ratpack & Spring Boot,InfoQ上的中文地址:使用Ratpack与Spring Boot构建高性能JVM微服务. 在微服务天堂中Ratpack和Spring Boot是天造地设的一对.它们都是以开发者为中心的运行于JVM之上的web框架,侧重于生产率.效率以及轻量级部署.他

微服务架构

互联网保险O2O平台微服务架构设计 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也提现在这里.这也是微服务能够流行的原因,看看市场上曾经出现的服务架构:EJB.SCA.Dubbo等等,都比微服务先进,都比微服务功能完善,但它们都没有微服务这么深入民心,就是因为他们过于复杂.简单就是高科技,苹果手机据说专门有个团队研究如何能让用户更加简单的操作.大公司都是由小公司发展起来的,如果小公司在开始技术选型时感觉某个框架费时费力就不会选择,而小公司发展到大公司的过程,一般也伴随着系统不断优

深解微服务架构:从过去,到未来|架构(2015-07-15)

随着用户需求个性化.产品生命周期变短,微服务架构是未来软件软件架构朝着灵活性.扩展性.伸缩性以及高可用性发展的必然方向.同时,以Docker为代表的容器虚拟化技术的盛行,将大大降低微服务实施的成本,为微服务落地以及大规模使用提供了坚实的基础和保障. 微服务的诞生   微服务架构(Microservice Architect)是一种架构模式,它提倡将单块架构的应用划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟

微服务 - 文章

[微服务与容器的监控 —— 来自Adrian Cockcroft的挑战][http://www.infoq.com/cn/news/2015/07/monitoring-microservices]Adrian Cockcroft在GlueCon 2015大会上为听众列举了如何对微服务与基于容器的应用进行监控的多条规则.他还重强调了在监控cloud native并且基于容器的系统时所面临的挑战,并介绍了微服务模拟与可视化工具“Spigo” [微服务的好处][http://www.infoq.co

孢子框架-接口访问层、ESB、微服务API GateWay对比

如果从百度去搜索“接口访问层”你会发现主要是.NET里面的技术,叫做IDAL,其实是数据访问层接口.它的主要作用是兼容多种数据库.比如你定义一个标准接口,然后实现改接口的SqlServer访问和Oracle访问,那么利用IDAL就可以自由切换数据库.看.NET DEMO PetShop4,总共有22个项目.大体思想是3层,从Model.DAL.BLL,然后他在各层上又采用了工厂模式,把逻辑与实现想分离,比如以前BLL直接调用DAL就好了,但现在BLL却调用了IDAL,IDAL就是一个接口层,里面

腾讯正式对外开源高性能 RPC 开发框架与微服务平台Tars

Tars 是将腾讯内部使用的微服务架构 TAF(Total Application Framework)多年的实践成果总结而成的开源项目,目前已于4月10日正式对外开源. 作为支持多语言的高性能 RPC 开发框架和配套一体化的服务治理平台,Tars可以帮助企业或者用户以微服务的方式快速构建稳定可靠的分布式应用,它的设计灵感来源于采取分层思想,实现开发与运营之间的分离.目前该框架在腾讯内部,已经在 160 多个业务(如手机浏览器.应用宝.手机管家.手机QQ.手机游戏等).1.6 多万台服务器上运行