云原生架构重要组成部分之微服务

前言

近几年来,云计算微服务架构非常火,运用广泛。各大厂商公司都运用了该技术架构,随着技术与理念的升级迭代,云原生概念应世而起,现在火的一塌糊涂。做为新时代的程序员,我们要抓住云原生的浪潮。


这篇文章呢大致分为四部分,第一部分简单谈一下什么是云原生,让小伙伴们有个大致了解。第二部分谈一下云原生的组成部分第三部分呢我们谈一谈云原生的重要组成部分之一 —— 微服务什么是微服务?第四部分主要谈谈云原生为什么用微服务架构


目录

前言

什么是云原生?

云原生组成部分

什么是微服务

云原生为什么用微服务架构


什么是云原生?

云原生现在这么火,那究竟什么是云原生呢?

云原生是一种构建和运行应用程序的方法,依赖容器作为技术来实现,是一种新型技术体系。云原生英语CloudNative)Cloud表示云。Native表示应用程序从设计之初即考虑到云的环境,充分利用和发挥云平台的弹性+分布式优势。云原生顾名思义,就是基于云计算特性所设计的应用服务,得益于云计算快速发展,基于云计算特性所设计的云原生应用相比传统的单体应用在安全性,扩展性,快速迭代,运维等各方便都有巨大的领先优势

云原生并不是指某一种技术,它是一种架构设计理念,只要符合这种架构设计理念的应用,都可以称为 云原生应用。

以下是云原生概念出现的几个时间点。

  • 2013年Pivotal公司的Matt Stine首次提出云原生(CloudNative)的概念;
  • 2015年Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、扛脆弱性;
  • 2017年Matt Stine将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质;
  • 到现在Pivotal最新官网对云原生概括为4个要点:DevOps持续交付微服务容器


云原生组成部分

根据第一部分,到现在Pivotal最新官网对云原生概括为4个要点:DevOps持续交付微服务容器

 1. DevOps

维基百科定义

DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。


DevOps,Dev+Ops,开发和运维。这是一个敏捷思维,为云原生提供持续交付能力。

2. 持续交付

摒弃传统的瀑布式开发模型,采用分布式架构+敏捷开发+微服务架构+DEVOPS模式。开发做到准时开发,快速开发,快速更新。要求开发版本和稳定版本并存。

3. 微服务

第三部分会详细介绍什么是微服务,这里简单说明一下。

微服务是将单一程序划分为一个一个独立的模块,自成一个服务,各个独立模块可以根据业务需求等使用不同的技术实现,它们之间通过轻量级的通信机制进行调用。(通常是基于HTTP的RESTful API)。

4. 容器

云原生更侧重应用程序的运行环境, 它是以K8S和容器为基础的云环境。目前Docker是应用最为广泛的容器引擎,容器化为云原生微服务提供实施保障,K8S用于容器管理,容器间的负载均衡。


什么是微服务

微服务是当下非常火的架构技术,无论你是否接触云原生,这一块你都是要了解的,因为目前国内绝大多数公司在技术选型上是采用的微服务架构,由此可见学习微服务是多么的重要。现在云原生架构火的一塌糊涂,微服务又是其重要组成部分,你懂得。

什么是微服务,我们先来看一下维基百科的定义:

一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建。

微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。


微服务顾名思义,就是微小的服务。把之前单一架构的项目划分为一个一个的小项目,划分成的每一个小项目都可以是独立的服务,可以独立运行独立部署。如果一个微服务要调用另一个微服务,那我们可以用RESTful API进行调用。这样一来,每个项目之间的耦合度大大降低,减少了后期维护的成本。


在这里小梦推荐的微服务技术栈是Spring Cloud,Spring Cloud是目前微服务开发的主流技术栈,大多数公司都在使用,小伙伴们回头可以学习学习。

Spring Cloud核心组件

  • 服务网关 Zuul
  • 服务注册发现 Eureka+Ribbon
  • 服务配置中心 Apollo
  • 认证授权中心 Spring Security OAuth2
  • 服务框架 Spring MVC/Boot

当然没有一种技术是完美的,都会有缺点和不足。有个问题大家可以一起思考一下“微服务会不会出现过多的微服务无法管理的问题? ” 。

在小梦看来,会出现过多的微服务无法管理的问题。当把一个单体服务划分为细小的微服务的时候,每个微服务之间是相互独立的,它们可以有着不同实现方式,不同的缓存,数据库,服务器。当服务数量和范围在一定可控的范围内,那我们管理起来相对容易,每个团队负责一块服务,记录自己负责的服务的技术栈,以及数据库和部署的服务器的健康状态。试想当划分的服务数量变的十分庞大,每个服务都要独立部署,当资源有限的时候,这就变得十分复杂。相当于一个人本来一天能做一个工作,但你给他安排了10个工作,打~他也做不完啊。微服务也一样,当数量大起来,也就复杂起来。

当然我们可以通过Docker这样的容器技术来避免污染主机环境并避免过度设计服务。但是,这些方法需要付出努力和时间。


云原生为什么用微服务架构

云原生为什么用微服务架构可想而知,微服务架构非常适合云原生应用程序,我们将应用程序设计为预期将部署在分布式、可扩展的基础架构上。微服务使服务模块化,不在单一。每个微服务将分配多个服务器节点,允许部署冗余微服务架构。如果主模块或服务因任何原因而失败,冗余服务模块会代替主模块进行服务,好比一个公司的股票系统正常运行中,突然一个系统服务宕机了,另一个服务接受到信号接替它继续工作,等维护开发人员解决宕机问题,再交由主服务模块进行服务,这样用户再操作股票时不会有影响。如果我们使用的不是微服务架构而是单一架构,一旦服务宕机,那系统就瘫痪了,公司将面临的巨大损失。


这篇文章如果对小伙伴们有帮助的话,希望点个赞支持一下~ 十分感谢~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十届蓝桥杯——JAVA真题集锦

蓝桥杯百度百科: 蓝桥杯全国软件和信息技术专业人才大赛是由工业和信息化部人才交流中心举办的全国性IT学科赛事。共有北京大学、清华大学、上海交通大学等全国1200余所高校参赛,累计参赛人数超过40万人。2020年,蓝桥杯大赛被列入中国高等教育…

IIS与asp.net管道

阅读目录 asp.net是什么HTTP协议IIS与asp.netasp.net管道参考资料我们在基于asp.net开发web程序,基本上都是发布部署到安装了IIS的windows服务器上,然后只要用户能够访问就算任务完成了,但是很少静下心来想想这背后到底发生了什么&#xff0…

2022最新Spring相关大厂常问技术面试题大全 —— 金三银四好时机

Spring相关大厂常问面试题1. 什么是 Spring 框架?2. 列举一些重要的Spring模块?3. RestController 与 Controller 的区别4. 谈谈自己对于 Spring IoC 和 AOP 的理解5. Spring 中的 bean 的作用域有哪些?6. Spring 中的单例 bean 的线程安全问题了解吗7. Component…

C#进阶系列——AOP?AOP!

前言:今天大阅兵,可是苦逼的博主还得坐在电脑前写博客,为了弄清楚AOP,博主也是拼了。这篇打算写写AOP,说起AOP,其实博主接触这个概念也才几个月,了解后才知道,原来之前自己写的好多代…

SpringMVC大厂常问技术面试题大全 —— 金三银四进大厂

目录 ⭐你对SpringMVC框架的理解? ⭐SpringMVC主要组件? ⭐SpringMVC的执行流程以及各个组件的作用? ⭐SpringMVC支持的转发和重定向的写法? ⭐SpringMVC的常用注解? ⭐SpringMVC统一异常处理的思想和实现方式&a…

c#进阶(7)—— 异步编程基础(async 和 await 关键字)

async 和 await 关键字只是编译器功能,编译器会用Task类创建代码。 返 回值是一个Task,这种返回新线程的方法虽然可以提高系统的响应能力,但是多线程取值会给编码带来不便,所以新出的关键字await用于阻塞当前线程并 获取目标线程…

字节二面 —— 什么是同步锁、死锁、乐观锁、悲观锁

马上就要到金三银四佳季了,是找工作的好时候,小伙伴们一定要把握好时机,找到心仪的高薪工作。找工作就少不了面试,那我们从现在开始,多刷刷面试题,查缺补漏!!! 目录 1. …

C#进阶之WebAPI(一)

最近出去面试,被问到关于WebAPI的知识,因为项目中没有单独写过WebAPI,使用的时候是和mvc结合在一起使用的,所以,在我的印象中WebAPI和mvc是差不多的,这种答案当然不能让人满意了,于是今天做个关…

【LeetCode-SQL每日一练】—— 620. 有趣的电影

🎈写在前面 🙋‍♂️大家好呀,我是超梦。大家可以叫我小梦~ 小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟数据库打交道的,为了更好的操作数据库,我们的SQL知识储备是必不可少的…

改了一行代码,MySQL查询效率提升了80%,老板奖了我50万

⭐前言 优化MySQL数据库是数据库管理员必备的技能,通过不同的优化方式方法来达到提高MySQL数据库性能的目的。 MySQL数据库当用户和数据量非常少的情况下,我们就很难判断MySQL数据库性能的好坏。只有当用户量与数据量大起来,MySQL的性能如何才…

C#进阶之WebAPI(二)

今天学习一下:WebAPI如何使用呢? 首先我们打开vs新建一个WebAPI项目,可以看到一共有这些文件夹目录 首先了解一下这些文件夹/文件的意义(按照程序启动的流程,相关的配置项就不说了), Global.as…

字节一面 —— List 和 Map、Set 的区别

马上就要到金三银四佳季了,是找工作的好时候,小伙伴们一定要把握好时机,找到心仪的高薪工作。找工作就少不了面试,那我们从现在开始,多刷刷面试题,查缺补漏!!! 目录 ⭐常…

C#进阶之WebAPI(三)

今天复习一下WebAPI的路由知识: 首先分析一下MVC路由和WebAPI路由的区别: 在mvc里,默认的路由机制是通过URL路径去匹配控制器和Action方法的,在mvc中的默认路由定义在App_Start文件夹下的RouteConfig.cs文件下: publ…

阿里一面 —— HTTP中重定向和请求转发的区别?

马上就要到金三银四佳季了,是找工作的好时候,小伙伴们一定要把握好时机,找到心仪的高薪工作。找工作就少不了面试,那我们从现在开始,多刷刷面试题,查缺补漏!!! 目录 ⭐T…

C#异步编程-------异步编程模型(APM)

术语解释: APM 异步编程模型, Asynchronous Programming Model EAP 基于事件的异步编程模式, Event-based Asynchronous Pattern TAP 基于任务的异步编程模式, Task-based Asynch…

【LeetCode-SQL每日一练】—— 627. 变更性别

🎈写在前面 🙋‍♂️大家好呀,我是超梦。大家可以叫我小梦~ 又到了练习SQL的时候啦!一起来学习吧! 🙋‍♂️ 小伙伴们如果在学习过程中有不明白的地方,欢迎评论区留言提问,小梦定知无…

iis运行原理 Asp.Net详解IIS内部运行原理

本章节主要讲IIS和 管道内部如何处理客户端Http请求,会较多的以代码的形式讲述,让大家对HttpApplication、HttpHandler、HttpApplicationFactory、Page这几个在处理请求过程中扮演重要角色的对象有更深入的了解。 下面我们通过单步调式跟踪System.Web.D…

【LeetCode-SQL每日一练】—— 1179. 重新格式化部门表

🎈写在前面 🙋‍♂️大家好呀,我是超梦。大家可以叫我小梦~ 又到了练习SQL的时候啦!一起来学习吧! 🙋‍♂️ 小伙伴们如果在学习过程中有不明白的地方,欢迎评论区留言提问,小梦定知无…

阿里一面 —— 什么是多线程?

马上就要到金三银四佳季了,是找工作的好时候,小伙伴们一定要把握好时机,找到心仪的高薪工作。找工作就少不了面试,那我们从现在开始,多刷刷面试题,查缺补漏!!! 目录 ⭐什…

第九节:JWT简介和以JS+WebApi为例基于JWT的安全校验

一. 简介 1. 背景 传统的基于Session的校验存在诸多问题,比如:Session过期、服务器开销过大、不能分布式部署、不适合前后端分离的项目。 传统的基于Token的校验需要存储Key-Value信息,存在Session或数据库中都有弊端,如果按照一…