微服务技术选型
转: http://www.youmeek.com/microservice/
后端类开发总结 / 预测
- 2018 ~ 2020 Spring Cloud Finchley 以及后续版本、Kubernetes 开始全面发力
- 2020 开始 ServiceMesh 开始发力
- 2020 ~ 2023 ServiceMesh 全面发力,Serverless 开始发力
- 2025 Serverless 全面占据中小企业。
在商言商
- 一家公司在发现新的市场需求的时候,先发制人所产生的优势是非常重要的。所以美国利宝相互保险公司执行副总裁兼首席信息官 James McGlennon 说过这样的话:
“我们了解到的其中一件事是:如果你不能提高上市速度,毫无疑问,市场将发生变化,无论你对产品的设计、构建、部署或对员工的培训有多好,都不会完全适合市场需求,只因为晚了一点点。” 来源
- 能减少生产的投入,自然推广的资源也就变多了,在保证良好服务的情况下,市场占有率就会越高。中小公司刚起步的时,系统压力小,采购服务器资源少。随着公司发展,部分功能模块流量越来越大,而部分功能流量依旧稀少,有的功能是 CPU 型应用,有的是内存型应用,有的是存储、宽带等,如果公司能只针对压力大的功能进行服务资源扩展那就好了。
- 因为这个需求,我们也发现 IT 世界这几年发生新的变化:
- 云服务
- 容器
- 微服务、前后端分离
- DevOps
- 服务网格(ServiceMesh)
- 无服务器架构(Serverless)
- 我们今天主要聊的是:微服务。至于其他概念在后续文章会进行补充。
微服务的根:敏捷开发
瀑布式开发
- 在讲敏捷开发之前需要说下它的对立面:不敏捷,也就是敏捷之前大家常用的开发模式:瀑布式开发。
- 瀑布式开发是一套经典的软件工程方法论,其定义了一套完备的过程规范,使得软件开发的运作就像是机器设备一样正常的运转而总结出来的项目管理方法论。
- 这套方法论分为5个阶段:需求分析、设计、编码、测试和维护。
- 需求分析阶段通常定义系统的需求,明确系统的目标;
- 设计阶段通常确定系统使用什么数据库,系统模块的划分,各个模块的功能;
- 编码阶段用编程语言实现设计阶段的任务;测试阶段主要测试功能是否实现,以及是否正确没用Bug;
- 维护阶段是根据用户新的需求重新修改系统,使系统运行正常,更加稳定。
- 现如今瀑布式开发一般在传统行业使用,互联网的公司如今一般用的是敏捷开发,那它为什么会互联网公司这么流行?主要还是传统软件开发模式过程太繁琐,且还有严格的文档的要求,了解过日本外包可能可以理解这个文档的概念,所以对于互联网行业这种传统模式开发效率太低低。
敏捷开发
- 今天的主角是:微服务(Microservice Architecture,简称 MSA),这个概念其实很早就有了,只是没人像 Martin Fowler 那样进行系统整理、归纳。
- 说到 Martin Fowler 那就得说道敏捷。Martin Fowler,这个老头子在面向对象分析设计、UML、模式、软件开发方法学、XP(敏捷极限编程)、重构等方面,都是世界顶级的专家,抽象能力不是一般的好。
- 因为 Martin 是敏捷先驱,早期敏捷宣言的起草人之一,所以在他所理解的开发世界中,敏捷开发是最为关键的一个点。而敏捷开发有四个核心价值观被我们熟知:
- 我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此我们建立了如下价值观:
个体和互动
高于流程和工具
(我的理解:以人为本,有效沟通)工作的软件
高于详尽的文档
(我的理解:以实际产出的有效软件为目的,文档为辅助)客户合作
高于合同谈判
(我的理解:产出的软件最终是要服务客户)响应变化
高于遵循计划
(我的理解:世界上唯一不变的就是变化,我们经常在变化过程中发现我们真正需要的)- 也就是说,尽管右项有其价值,我们更重视左项的价值。
- 敏捷宣言还有一套原则,来辅助这四个核心价值:
我们遵循以下原则: 我们最重要的目标,是通过持续不断地 及早交付有价值的软件使客户满意。 欣然面对需求变化,即使在开发后期也一样。 为了客户的竞争优势,敏捷过程掌控变化。 经常地交付可工作的软件, 相隔几星期或一两个月,倾向于采取较短的周期。 业务人员和开发人员必须相互合作, 项目中的每一天都不例外。 激发个体的斗志,以他们为核心搭建项目。 提供所需的环境和支援,辅以信任,从而达成目标。 不论团队内外,传递信息效果最好效率也最高的方式是 面对面的交谈。 可工作的软件是进度的首要度量标准。 敏捷过程倡导可持续开发。 责任人、开发人员和用户要能够共同维持其步调稳定延续。 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。 以简洁为本,它是极力减少不必要工作量的艺术。 最好的架构、需求和设计出自自组织团队。 团队定期地反思如何能提高成效, 并依此调整自身的举止表现。
- 在 2001 年 2 月 Martin Fowler,Jim Highsmith 等 17 位著名的软件开发专家忍不了这些低效率,总结了他们过去的经验,提出了这个概念并发表宣言。
- 敏捷开发的特点就是:拥抱市场变化,积极响应市场需求,利用变化为产品创造竞争优势。
- 但是也因为这样的特点,敏捷开发在实际落地的时候很多团队又遇到了新的问题:走两个极端。
- 一种极端:犹如敏捷宣言所说的:个体和互动高于流程和工具,工作的软件高于详尽的文档。有些团队理解成了,那就不需要详细的计划,不需要周全的架构。(比如我们有些人就不喜欢写 README.md)
- 一种极端:既然需求都是在变的,那我们就不断根据变动需求开发、测试、测试、开发。(比如,我们有的开发从来不会思考需求是否真的符合人类的思维。我们开发者也是软件的使用者。)
- 很明显这种极端可能在我们身边都有出现过,我们也感受到这两种极端所带来的危害。
- 所以,在使用微服务的技术做项目之前,我们需要先搞懂敏捷开发在整个项目开发过程中关键点,这也是为什么介绍微服务开发之前觉得先应该说的。
模块拆分(组件化)、服务拆分、分布式、集群、负载均衡、微服务、DevOps、前后端分离
模块拆分
- 只是为了让代码更加简洁和可以维护,根据技术带来拆分模块,模块之间互相依赖。
服务拆分
- 是微服务的第一步,也是我认为最重要的一步,也是最初最难的一步,拆的不好后面的设计也会有问题。
- 只有真正理解业务,摸清楚需求的核心,才能拆分出一个有良好边界的模型。并且还要尽可能考虑后续需求的变更。(当然,随着时间的发展,我们个人开发者阅历的发展,终归会有技术债务,但是只能努力去克服)。
- 关于领域驱动设计(DDD)Martin Fowler 也在自己的博客也有文章。DDD 是著名建模专家 Eric Evans[‘erɪk ‘evənz] 提出来的,这两个人都是抽象的大神,同一个界面的。
- 服务拆分,优先先找到核心领域,比如广告系统:
– 核心领域:商户、渠道、推广用户、SKU、推广任务、广告、广告成效
– 通用领域:系统用户、权限
– 支撑领域:搜索、日志、图片、文件
分布式
- 相对于单体系统,分布式是指将一个业务拆分不同的子业务,分布在不同的服务器上执行,不同服务器之间可以互相通信和协调。
- 图片来源:小白科普:分布式和集群
集群
- 是指多台服务器集中在一起,实现同一业务(同一个业务代码部署多套到不同机子上),集合起来提供服务的(一般会配上负载均衡)。理论上,分布式的系统一般都是带集群的。
- 图片来源:小白科普:分布式和集群
负载均衡
- 高效分发请求
- 图片来源:小白科普:分布式和集群
微服务
- 作者有关 Microservice 的原文:https://martinfowler.com/articles/microservices.html
- 中文翻译:http://insights.thoughtworks.cn/microservices-2/
- 它不是框架,也不是系统,只是一种架构风格。所以我们用的 dubbo [‘dʌbəu]、Spring Cloud 等框架,都是分布式服务框架。只是这种分布式服务框架都是微服务架构必不可少的基础能力,微服务一定是分布式的。分布式服务的概念比较模糊,只是解决了网站的高并发问题,很多细节问题是微服务帮其明确的。微服务更加强调敏捷和健壮,强调服务的粒度,一个服务只需完成一个单一的、独立的功能,多个微服务组合完成相对复杂的业务系统,以满足需求。而且微服务注重借助于各种中间件进行业务解耦和提高性能,以及提高服务的容错性。
- 所以,理论上:微服务的架构都是带:模块拆分、服务拆分、分布式、集群。
- 微服务其实在很早以前就有人/公司在做,只是过去没人去给它做总结和思考它本身,然后 Martin Fowler 就帮我们帮我们做了。
- 单体系统在早期也没啥不好,但是随着 AWS 这种可弹性扩展的云诞生之后,这种单体架构就显得不够时尚了,只有微服务的架构才能合理榨干这些各种类型的云服务。
微服务的目的是有效的拆分应用,实现敏捷开发和部署 。
DevOps
我们知道微服务的服务一般要单一、独立,从技术上说,这是通过工具把应用程序的内部复杂度转化为外部复杂度,需要一系列工具支撑微服务本身以及服务之间的通信。从组织上说,微服务团队要满足“快速发布,独立部署”的能力,则必须具备 DevOps 的工作方式。
- 当我们把服务拆分之后,团队组织结构还是保留单体系统的结构的时候会经常看到这类对话:
这个包在我本地运行没有问题,部署到服务器出问题了,那肯定是你那边环境有问题呀(开发者说)
你们到底是怎么开发的,一部署上去,CPU 和 内存的占用立马暴增(运维人员说)
- 那简单地讲什么是 DevOps(Deveplopment 和 Operations 的简称)?DevOps 是一种研发模式,方法论,2009 年开始发展起来,它不是框架或是技术的东西,是更好的优化开发(DEV)、测试(QA)、运维(OPS)的流程,开发运维一体化,通过高度自动化工具与流程来使得软件构建、测试、发布更加快捷、频繁和可靠。主要目的在于提高用户和业务需求提高产品的交付能力与效率。所以要践行 DevOps 第一个要改变的就是管理理念。
- 在这些 DevOps 工具中,现如今有一个东西是必不可少的的:Docker(容器化)。到了今年 2018 年,如果是微服务系统,没有用到容器化的技术的,一般也可以认为是微服务不够的表现。
- 当然,更未来的技术也开始出现了:Serverless(无服务器风格的架构 AWS Lambda 免去了很多环境管理的工作,包括设备、网络、主机以及对应的软件和配置工作,使得软件运行时环境更加稳定)
- DevOps 虽然不是技术,但是它有一堆的技术工具来践行它的理念。
- 目前业界主流的 DevOps 工具箱有:
- 版本控制&协作开发:GitHub、GitLab
- 自动化构建和测试:Maven 、Gradle
- 持续集成&交付:Jenkins、Travis CI
- 容器平台:Docker、Rocket、第三方厂商如(AWS/阿里云)
- 配置管理(或 Automated infrastructure ):Chef、Puppet、Ansible
- 微服务平台:OpenShift、Cloud Foundry、Kubernetes、Mesosphere
- 日志管理:Logstash、CollectD、StatsD
- 监控,警告&分析:Nagios、zabbix、ELK
- 编辑器:IntelliJ IDEA
- IM: Slack、钉钉
- 利用这些工具会产生什么样的效果:
- 代码的提交直接触发测试、发布
- 各服务功能单一:使问题定位和调试变得简单
- 全开发流程高效自动化:稳定,快速,交付结果可预测
- 持续进行自动化回归测试:提升交付质量
- 设施共享并按需提供:资源利用最大化
- 由上可以看出来:DevOps 和敏捷目的一样,都是为了更快、更好的交付。所以也有人认为 DevOps 是敏捷的子集,也有一种说法是:新的敏捷概念:大规模敏捷(Scaling Agile),团结更多人的敏捷。
- 以前我们认为的敏捷基本都是认为一个项目开发过程的敏捷,但是 DevOps 方法下,运维也是敏捷。
- 所以 Amazon CTO 2014 年有这样一句话: “You Build It, You Run It”(谁开发,谁运行)
- 目前的趋势来看,随着未来运维智能化,可能就是 NoOps 了。
前后端分离
- 这几年前端发展太快,前端已经可以很好滴做很多事情,所以术业有专攻,很多时候,如果项目大、公司开发人员足够的话,最好都进行前后端分离。
- 分离之后我们常会遇到下面几个问题:
- Mock。推荐用 YApi 工具,具体看 YApi 官网,本质还是要了解 mockjs。
- 开发阶段的调试:Swagger
- 跨域问题:后端 Spring MVC 需要配置 CORS 相关(CORS = Cross-Origin Resource Sharing,在服务器端设置响应头,把发起跨域的原始域名添加到Access-Control-Allow-Origin 即可)。
- 接口版本:在请求头有版本标识,后台接口 mapping 地址不变,扩展多个私有方法,根据请求版本来区分调用哪个。
- 数据传输格式统一:JSON(不管是接受还是发送。除了批量初始化数据这类操作,建议 CSV 文件上传,后端用流方式)
- 认证。这里主推 JWT,具体可以看我这篇 优化单点登录流程的好东西:JWT 介绍
- 权限控制。如果有网关的话,后端的用户的认证和鉴权都是在网关进行处理。前端在用户登录后拿到用户权限列表标识,页面根据这些标识判断是否有对应的按钮、菜单权限。
- SEO 问题。内部系统不需要,面向广大用户的外部系统可以 Google 下。
- 根据实践,一般建议前端开发者给后端做一些目前大前端的基础培训,让他们可以简单看懂代码,会修改简单组件即可。
微服务团队
- 根据康威定律:
设计一个系统的任何组织(广义上)都会产生这样一种设计,其结构是组织交流结构的复制。
- 意思就是:设计一个系统的团队结构将决定了一个软件系统的结构,将人员划分为 UI 团队,中间件团队,DBA 团队,那么相应地,软件系统也就会自然地被划分为 UI 界面,中间件系统,数据库。而一个高效的微服务团队会针对这种情况进行改善,微服务团队需要是一个全栈的团队,跨职能的团队,应该包含整个项目周期的所有技能,前后端开发、UI设计、测试、构建部署、上线与运维都是必须技能。
- 这种组织结构的好处是:在业务服务的内部实现需要升级或者变更时,团队内的各角色成员进行沟通即可,而不需要进行跨团队沟通,这大大提高了沟通效率。只有服务之间的接口需要变更时才需要跨部门沟通,如果前期在服务之间的交互上定义了良好的接口,则接口变更的概率并不大,即使接口模式有变更,也可以通过一定的设计模式和规范来解决。
引入微服务带来的技术问题
- 既然微服务的目的是有效的拆分应用,实现敏捷开发和部署,那拆分后的新模式肯定会带来新的问题。
- 客户端怎么访问 N 个服务?
- N 个服务怎么管理?
- N 个服务如何通信?
- 服务挂了怎么处理?
- 服务变成无状态?
- 网络开销?
微服务是如何解决
客户端如何访问这些服务?
- 引入 API Gateway(网关),提供统一服务入口,让微服务对前台透明,方便客户端调用
- 引入网关最大的问题是:单点故障,性能瓶颈。
服务是如何通信?
- 最通用的有两种方式:
- 同步调用:
- REST
- RPC(Thrift, Dubbo)
- 异步调用:
- MQ、Kafka
- 异步主要是可以降低调用服务之间的耦合,又能成为调用之间的缓冲,确保消息积压不会冲垮被调用方,同时能 保证调用方的服务体验,继续干自己该干的活,不至于被后台性能拖慢。
这么多服务,怎么找?
- 在微服务架构中,一般每一个服务都是有多个拷贝,来做负载均衡。一个服务随时可能下线,也可能应对临时访问压力增加新的服务节点。服务之间如何相互感知?服务如何管理?Dubbo 是用 zookeeper 来管理。
这么多服务,服务挂了怎么办?
- 随机中一个,多个服务器挂了是正常,但是服务还是得照样提供,所以我们需要解决:
- 重试机制
- 限流
- 熔断机制
- 负载均衡
- 降级
难点
多套系统的数据
- 每个微服务都有自己独立的数据库,那么后台管理的联合查询怎么处理?这应该是大家会普遍遇到的一个问题,目前常见有三种处理方案。
- 严格按照微服务的划分来做,微服务相互独立,各微服务数据库也独立,后台需要展示数据时,调用各微服务的接口来获取对应的数据,再进行数据处理后展示出来,这是标准的用法,也是最麻烦的用法。
- 将业务高度相关的表放到一个库中,将业务关系不是很紧密的表严格按照微服务模式来拆分,这样既可以使用微服务,也避免了数据库分散导致后台系统统计功能难以实现,是一个折中的方案。
- 数据库严格按照微服务的要求来切分,以满足业务高并发,实时或者准实时将各微服务数据库数据同步到 NoSQL 数据库中,在同步的过程中进行数据清洗,用来满足后台业务系统的使用,推荐使用 MongoDB、Elasticsearch、HBase 等。
- 未来 TiDB 这类 NewSQL 成熟了,我们就会好过点。
微服务架构的数据一致性问题
- 以电商平台为例,当用户下单并支付后,系统需要修改订单的状态并且增加用户积分。由于系统采用的是微服务架构,分离出了支付服务、订单服务和积分服务,每个服务都有独立数据库做数据存储。当用户支付成功后,无论是修改订单状态失败还是增加积分失败,都会造成数据的不一致。目前常见的三种方式解决最终一致性:
- 可靠消息最终一致性
- TCC(Try-Confirm-Cancel)
- 最大努力通知
- 三者比较:
微服务的主要组件
- 常见的微服务组件及概念
- 服务注册,服务提供方将自己调用地址注册到服务注册中心,让服务调用方能够方便地找到自己。
- 服务发现,服务调用方从服务注册中心找到自己需要调用的服务的地址。
- 负载均衡,服务提供方一般以多实例的形式提供服务,负载均衡功能能够让服务调用方连接到合适的服务节点。并且,节点选择的工作对服务调用方来说是透明的。
- 服务网关,服务网关是服务调用的唯一入口,可以在这个组件是实现用户鉴权、动态路由、灰度发布、A/B测试、负载限流等功能。
- 配置中心,将本地化的配置信息(properties, xml, yaml等)注册到配置中心,实现程序包在开发、测试、生产环境的无差别性,方便程序包的迁移。
- API管理,以方便的形式编写及更新API文档,并以方便的形式供调用者查看和测试。
- 集成框架,微服务组件都以职责单一的程序包对外提供服务,集成框架以配置的形式将所有微服务组件(特别是管理端组件)集成到统一的界面框架下,让用户能够在统一的界面中使用系统。
- 分布式事务,对于重要的业务,需要通过分布式事务技术(TCC、高可用消息服务、最大努力通知)保证数据的一致性。
- 调用链,记录完成一个业务逻辑时调用到的微服务,并将这种串行或并行的调用关系展示出来。在系统出错时,可以方便地找到出错点。
- 支撑平台,系统微服务化后,系统变得更加碎片化,系统的部署、运维、监控等都比单体架构更加复杂,那么,就需要将大部分的工作自动化。
Java 的微服务方案:Spring Boot、Spring Cloud
- 先推荐业界的 Spring Cloud 最佳实战:https://github.com/sqshq/PiggyMetrics
- Spring Cloud 起源于 Netflix (网飞)的 NetflixOSS(因为是基于 Spring Boot,所以是和 Spring 深度合作的产物),并且在他们的产品上得到成功验证,也是目前业界最认可并推崇微服务框架。
- 关于 Spring Boot 和 Spring Cloud 两者之间的关系可以这样简单粗暴地理解:
- 因为:
- Spring Core == Spring Boot
- Spring MVC == Spring Cloud
- 所有:
- Spring MVC 依赖 Spring Core
- Spring Cloud 依赖 Spring Boot
- 因为:
- 但是,Spring Boot 严格一样上不算是一个框架(也算是框架),应该是说 Spring 框架的一个组合表达方式。这种表达方式主要是为了解决过往 Spring 项目中各种 xml 文件配置、各种依赖包带来复杂度。
- Spring Cloud 是微服务的各个服务的管家。这些集合主要解决:服务发现注册、配置中心、网关路由、消息总线、负载均衡、断路器、数据监控等,实现这些功能组件有:
- Spring Cloud Config:配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。
- Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与 Spring Cloud Config 联合实现热部署。
- Eureka [jʊ’rikə]:云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。
- Hystrix [hɪst’rɪks] :熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
- Ribbon [‘rɪbən]:提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用。
- Feign [fen]:Feign是一种声明式、模板化的HTTP客户端。
- Zuul:Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。
- Turbine [‘tɝbaɪn]:是聚合服务器发送事件流数据的一个工具,用来监控集群下 hystrix 的 metrics 情况。
- Spring Cloud OAuth2 – 基于 Spring Security 和 OAuth2 的安全工具包,为你的应用程序添加安全控制。
- Spring Cloud Sleuth [sluθ]:日志收集工具包,封装了Dapper和log-based追踪以及Zipkin和HTrace操作,为SpringCloud应用实现了一种分布式追踪解决方案。
- Spring Cloud Stream:基于Redis,Rabbit,Kafka实现的消息微服务,简单声明模型用以在Spring Cloud应用中收发消息。
- 实际常见的流程:
- 请求统一通过API网关(Zuul)来访问内部服务,在网关这一步做认证和鉴权
- 认证和鉴权后,网关从注册中心(Eureka)获取可用服务
- 由Ribbon进行均衡负载后,分发到后端具体实例
- 微服务之间通过Feign进行通信处理业务
- Hystrix 负责处理服务超时熔断
- Turbine 监控服务间的调用和熔断相关指标
- Sleuth + Zipkin 将所有的请求数据记录下来,方便我们进行后续分析(分布式链路跟踪)
最终个人在技术选型上的选择
- 优先级高
- 统一环境:NTP、时区、hosts
- 服务注册:Eureka
- 熔断器:Hystrix + Turbine
- 网关:zuul
- 客户端负载均衡:Ribbon
- 内部服务调用:Feign
- 认证鉴权:Spring Cloud OAuth2 + JWT
- 分布式调用链监控:Spring Cloud Sleuth + Zipkin
- 状态机:Spring StateMachine
- 数据库:MyCAT + MySQL 5.7
- 部署:Docker
- 持续集成:Jenkins
- 构建工具:Maven
- 版本控制:Gogs
- 项目管理:TAPD
- 后台 API 文档:Swagger
- 优先级中
- 消息队列:Kafka
- 日志收集:ELK + Kafka
- 图片系统:FastDFS
- 分布式调度:xxl-job
- 缓存:Redis
- API Mock:YApi
- 前端:Angular
- 程序监控:Spring Boot Admin / Spring Boot Actuator
- 优先级低
- 分布式配置中心:Spring Cloud Config Monitor / Apollo(携程)
- Docker 监控:CAdvisor + InfuxDB + Grafana
资料
- 敏捷软件开发宣言
- 敏捷宣言遵循的原则
- 敏捷宣言以及敏捷开发的特点
- 敏捷开发的起源和发展历史
- PM学项目管理之:什么是敏捷开发?(上)
- 《微服务:从设计到部署》中文版
- 微服务(Microservice)那点事
- 从架构演进的角度聊聊Spring Cloud都做了些什么?
- 微服务从设计到部署(一)微服务简介
- 如何构建微服务架构
- 微服务架构的核心要点和实现原理
- 中小型研发团队架构实践:微服务架构
- 微服务架构技术栈选型手册
- 部署微服务的时候,Spring Cloud 和 Kubernetes 哪个更好?
- 关于Cloud Native架构与Matt Stine的一次对话
- 实现云原生应用,先理解架构微服务化
- 零基础玩转Serverless
- 所谓Serverless,你理解对了吗?
- Serverless 架构的优缺点
- DevOps详解
- 大规模敏捷(Scaling Agile)方法分析
- 基于 Docker 实现 DevOps 的一些探索
- 给 DevOps 初学者的入门指南
- 服务拆分与架构演进
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 微服务技术选型【转】
转自:https://www.cnblogs.com/wangdaijun/p/9322175.html 转: http://www.youmeek.com/microservice/ 后端类开发总结 / 预测 2018 ~ 2020 Spring Cloud Finchley 以及后续版本、Kubernetes 开始全面发力2020 开始 ServiceMesh 开始发力2020 ~ 2023 ServiceMesh …...
2024/4/20 5:31:14 - 一个复杂系统的拆分改造,压力真大!
点击上方蓝色“程序猿DD”,选择“设为星标”回复“资源”获取独家整理的学习资料!作者 | zhanlijun来源 | https://www.cnblogs.com/LBSer/p/6195309.html1 为什么要拆分?先看一段对话。从上面对话可以看出拆分的理由:1࿰…...
2024/4/19 20:10:32 - 做双眼皮出国
...
2024/4/21 14:57:30 - 做双眼皮抽脂视频
...
2024/4/21 14:57:30 - 3分钟快速搭建nodejs本地服务器运行测试html/js
(前端工程师利器) 背景 做前端的都知道,公司的项目在自己的电脑上搭建环境是挺麻烦的一件事情 首先:一般个人电脑没公司的配置性能好,其次:搭建公司项目在自己电脑涉及很多缓存环境,资源环境…...
2024/4/21 14:57:29 - 工程训练:生意专家:02 程序的第一次运行
目录0. 项目目录1. 任务1.1 任务介绍1.2 任务要求1.2.1使用angular的服务封装HTML5的本地存储1.2.2 处理程序第一次运行时进入向导页1.3 知识储备2. 使用服务封装HTML5的本地存储2.1 创建shared模块2.2 创建本地存储的服务service2.2 在服务中增加:增、删、改、查2.…...
2024/4/21 9:33:16 - 做双眼皮抽脂肪视频
...
2024/4/21 14:57:26 - 做双眼皮吃什么水果好
...
2024/4/21 14:57:25 - 做双眼皮吃什么水果
...
2024/4/21 14:57:25 - 做双眼皮吃什么好的快
...
2024/4/21 14:57:24 - 做双眼皮吃什么饭好
...
2024/4/21 14:57:22 - AngularJS在大型单页面应用中的性能优化
1. 简介 无论你正在编写一个旧的应用程序还是在一个大型应用中采用AngularJS,性能是一个重要的方面。了解是什么原因导致AngularJS应用程序慢下来非常重要,要知道,在开发过程中做出权衡是很重要的。本文将介绍一些AngularJS比较常见的性能问题…...
2024/4/21 14:57:21 - Express配置单页应用(SPA)路由
将前端的静态资源打包后放在express写的服务器中,存在刷新404问题。 原因: express默认将url地址识别为服务端路由(可以理解为API路径),使用前端的路径访问就会各种找不到路径。 解决方案 在express中配置由js控制…...
2024/4/20 18:05:40 - 单页应用模式和多页应用模式
最近学习VUE,了解到 “Vue.js 提供了一个官方命令行工具,可用于快速搭建大型单页应用” 之前做过项目,改过项目,基本都是小部分单页,大部分多页的模式,也没有在这方面进行细致的学习,这次通过学…...
2024/4/21 14:57:19 - 做双眼皮吃了辣椒
...
2024/4/26 19:11:22 - 做双眼皮吃辣椒后肿了
...
2024/4/20 15:10:35 - 做双眼皮拆线后护理
...
2024/4/27 9:27:40 - 复习Redux
简介 1、一句话概括 Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 2、action、reducer 和 store 所有的state都以一个对象树的形式,存储在一个单一的store中。唯一改变state的办法是触发action——1个描述发生什么的对象。为了描述action…...
2024/4/20 15:10:33 - Boston Angular Meetup: Traditional Redux vs Reactive Redux
https://www.youtube.com/watch?vl59OsGC_WvM 转载于:https://www.cnblogs.com/skating/p/6184679.html...
2024/4/20 15:10:32 - React 学习笔记 —— redux 的使用
redux是什么 redux是一个专门用于做状态管理的JS库(不是react插件库)。它可以用在react, angular, vue等项目中, 但基本与react配合使用。作用: 集中式管理react应用中多个组件共享的状态。 什么情况下需要使用redux 某个组件的状态,需要让其他组件可以随时拿到&…...
2024/4/26 19:14:20
最新文章
- hive启动beeline报错
问题一在zpark启动集群报错 出现上面的问题执行以下代码 chmod 777 /opt/apps/hadoop-3.2.1/logs 问题二启动beeline报错 执行 cd /opt/apps/hadoop-3.2.1 bin/hadoop dfsadmin -safemode leave 问题三执行查询语句报错 执行 set hive.exec.mode.local.autotrue;...
2024/4/27 10:08:47 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 大数据学习十三天(hadhoop基础2)
一: MapReduce概述(了解) MapReduce是hadoop三大组件之一,是分布式计算组件 Map阶段 : 将数据拆分到不同的服务器后执行Maptask任务,得到一个中间结果 Reduce阶段 : 将Maptask执行的结果进行汇总,按照Reducetask的计算 规则获得一个唯一的结果 我们在MapReduce计算框架的使用过…...
2024/4/21 15:56:12 - 【图论】知识点集合
边的类型 neighbors(邻居):两个顶点有一条共同边 loop:链接自身 link:两个顶点有一条边 parallel edges:两个顶点有两条及以上条边 无向图 必要条件:删掉顶点数一定大于等于剩下的顶点数 设无向图G<V,E>是…...
2024/4/25 6:59:51 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/26 18:09:39 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/26 20:12:18 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/27 4:00:35 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/25 18:39:22 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/25 18:39:22 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/26 21:56:58 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/27 9:01:45 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/26 16:00:35 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/25 18:39:16 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/26 22:01:59 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/25 2:10:52 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/25 18:39:00 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/25 18:38:58 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/27 8:32:30 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57