游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

盘点15个开源框架,微服务架构核心模块选型得看这篇

  前言
  为了实现基于微服务开发的产品,或者说为了将单体应用重构为微服务架构时,将面临着众多技术框架的选择。大公司往往会有专门的部门或团队来负责自主研发自己的框架,以满足产品的需要,但是对于一般的中小型企业,选择合适的开源框架就显得更接地气了。
  本章将简单介绍微服务中,在技术选型时需要注意哪些原则,一些常用的开源技术框架,希望能够为大家在进行技术选型、调研时提供一些思路方向。
  笔者面试过很多程序员,一提及微服务,就会具体说道SpringBoot、SpringCloud,然后就是背诵各种具体的用法和配置文件。并不是说这样不对,但我们更希望知道的是这些技术框架的原理,为什么选择它,它与其他类似框架又有何不同呢。
  至于一个技术框架该怎么用,它适用于什么场景,笔者建议可以直接阅读官方或对应的github上的文档,有需要时还可以阅读下关注点的源码,这样对正确的理解它,是很有必要的,毕竟官方发布的东西是相对权威的,其他地方的资料或许存在片面性,对大家的使用、理解存在一定的误导。(这只是笔者对大家在技术选型时,查阅资料时的一些建议)
  一、选型原则
  在软件开发领域,几乎每天都有新的技术框架诞生、更新,一些新的概念更是层出不穷,技术选型时,难免让人无从抉择。对于技术选型,我个人有以下几点建议:
  1。有需求,再引入
  在微服务架构中,各类组件技术很多很多,但并不意味着所有的都应该引入你的项目,倘若单纯为了覆盖全技术栈或组件而全部引入,这将是一种很不明智的选择。后续将会成为你项目的累赘,让你苦不堪言。
  只要你记住这六个字:有需求,再引入,就OK了。伴随着项目体系架构的完善、功能的健全,当有某方面的需求时,在逐步考虑是否引入某些技术组件。
  2。选择最熟悉、使用最多的技术
  一个新项目里最好不要使用超过30的新技术,我觉得这句话是有一定道理的。对于你完全不知道、不了解的技术,你是无法预估、掌控在使用过程中会出现的任何风险,一旦出现问题,短时间内解决不了,你将会变得很难堪。
  在这里不是说拒绝使用、接触新技术,新技术是值得大家去追捧、了解、学习,一些新技术在很大程度上能给我们带来前所未有的利处,解决其他技术框架解决不了的问题。这里所说的新技术,是指没有经过充分的考察、技术验证、存在种种疑惑的技术,而是一味地拿来主义,这样的风险可想而知。
  确保选择的技术,是业界使用最多的、被大家认可的技术,即使出现了问题,也能应对自如。至少在团队内部小范围是非常认可的。
  3。强大社区支撑的技术
  GitHub上star的数量是一个重要指标,同时参考近年来代码、文档、issues等更新频率,各大技术博客是否有相关技术分享记载,这些都是能够说明该技术是否活跃、受欢迎程度、使用人群多少等。
  拥有强大社区支持的技术,在选型后,倘若使用出现疑问、问题、bug等,能够有地方可替代、可修复、可深究探讨,毕竟现在的技术社区都是足够开放的。
  慎选个人开源的技术框架、组件等,里面到底有多少坑,没几个人能说清楚的,况且说不定哪天就不复存在了呢。
  4。从业务、项目规模出发
  任何技术的出发点都是为最终业务而服务的,不同业务、不同项目规模,对技术的要求指标都是不同的。
  处于初创期的业务,选型的基准是相对灵活,毕竟业务相对简单,支撑业务不是很大,只要够用、开发效率足够高就好。处于复杂业务而重构的项目,选型就需谨慎,往往伴随着一些复杂需求诞生、规模大小的不确定性,不得不考虑选型技术可能伴随着一些小修小补或者螺旋式上升的重构,则需选型便于适配、切换、替换,耦合度低的技术。
  正因为技术选型和业务相关,我们能够观察到一些很明显的现象:新技术往往被早期创业团队或大公司的新兴业务使用;中大型公司的核心业务则更倾向于用一些稳定了几年的技术;一个公司如果长期使用一种技术,就会倾向于一直使用下去,甚至连版本都不更新的使用下去。
  学会从业务端思考。首先我们需要充分地理解业务,理解用户需求,理解当下需要解决的首要问题,以及可能的风险有哪些,再将目标进行分解,进行具体的技术选型、模型设计、架构设计。
  5。先验证后使用
  对于未经验证的新技术、新理念的引入一定要慎重,一定要在全方位的验证过后,再大规模的使用,最终确定选型。
  新技术、新理念的出现,自然有它的诱惑,慎重并不代表保守,技术总是在不断前进,拥抱变化本身没有问题,但是引入不成熟的技术看似能带来短期的收益,但是它的风险或者是后期的成本可能远远大于收益。
  验证后,才有说服力,用着更放心。
  二、技术选型
  每种技术架构都有其优缺点,存在即合理,不同的业务场景使用不同的应用架构,技术框架,不一定说最新的架构、技术就是最适合你的。
  微服务架构中常提及到的主要技术框架选型如下表所示,本文后面将基于此展开说明对比。
  打开腾讯新闻,查看更多图片
  三、服务治理
  1。Dubbo
  Dubbo是一款高性能、轻量级的开源JAVARPC框架,以及SOA服务治理方案。简单的说,Dubbo就是个服务框架,说白了就是个远程服务调用的分布式框架。它提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡、以及服务自动注册和发现,很容易和Spring框架无缝集成。
  Dubbo逻辑架构如下图所示:
  Provider:暴露服务的提供方,可以通过jar或者容器的方式启动服务;
  Consumer:调用远程服务的服务消费方;
  Registry:服务注册中心和发现中心;
  Monitor:统计服务和调用次数,调用时间监控中心(dubbo的控制台页面中可以显示,目前只有一个简单版本);
  Container:服务运行的容器。
  Dubbo特点:
  远程通讯:提供对多种基于长连接的NIO框架抽象封装(非阻塞IO的通信方式,MinaNettyGrizzly),包括多种线程模型,序列化(Hessian2ProtoBuf),以及请求响应模式的信息交换方式。
  集群容错:提供基于接口方法的透明远程过程调用(RPC),包括多协议支持(自定义RPC协议),以及软负载均衡(RandomRoundRobin),失败容错(FailoverFailback),地址路由,动态配置等集群支持。
  自动发现:基于注册中心目录服务,使服务消费方能动态地查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
  在现有的微服务架构下,Dubbo只能说是一个服务治理框架,或者说是一个RPC框架,是以接口为粒度,一个接口类就就是一个服务。如果直接用Dubbo来实现微服务架构,还缺少以下几个功能:
  分布式配置:可以使用SpringCloudConfig、Apollo等来实现;
  链路追踪:可以使用Zipkin、CAT等来实现;
  批量任务:可以使用当当网开源的ElasticJob来实现。
  2。SpringCloud
  SpringCloud是目前最主流的微服务架构落地首选方案之一,是基于SpringBoot实现的开源框架,是一个全家桶,是微服务的整体技术栈。
  SpringBoot是Spring的一套快速配置脚手架,使用默认大于配置的理念,用于快速开发单个微服务。
  它为服务注册发现、动态路由、负载均衡、配置管理、消息总线、熔断器、分布式链路追踪、大数据操作等提供了简单的实现,让我们可以更简洁的使用它。
  正如我们前面说过的,微服务是可以独立部署、水平扩展、独立访问的服务单元,而SpringCloud就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多,调用链路复杂,从而管理成了很大的问题,而SpringCloud框架恰恰提供了各种组件用于管理和治理微服务。理所应当的,就成了大家的首选框架了。
  SpringCloud的整体架构如下图所示,提供一站式的微服务架构解决方案。
  使用SpringCloud来构建微服务架构可以省去你整合各家技术的成本,SpringCloud为我们构建微服务架构提供了一站式的解决方案,就好比当初Spring诞生是为解决EJB企业应用开发的众多问题而提供的一站式轻量级企业应用开发解决方案一样,随着使用SpringCloud的产品数量增加,SpringCloud在微服务架构中已一统江湖。
  下面是SpringCloud的完整技术栈,看完你就知道它为啥会在微服务架构中一统江湖了。
  3。对比、总结
  通过上表对比,很容易发现SpringCloud拥有很多的项目模块,包含了微服务系统的方方面面。Dubbo是一个非常优秀的服务治理和服务调用框架,但缺少很多功能模块,例如网关、链路追踪等。在项目模块上,SpringCloud占据着更大的优势。对比并不是否定谁,推崇谁,只是说明在不同场景下,有利优劣,需客观来看。
  如果仅关注于服务治理的这个层面,Dubbo其实还优于SpringCloud很多:
  支持多种序列化协议,如Hessian、HTTP、WebService;
  DobboAdmin后台管理功能强大,提供了路由规则、动态配置、访问控制、权重调节、均衡负载等功能;
  在国内影响力比较大,中文社区文档较为全面;
  阿里最近重启维护,成为Apache孵化项目;
  Dubbo使用RPC协议效率更高,在极端压力测试下,Dubbo的效率会高于SpringCloud效率一倍多。
  如果对效率有极高的要求建议使用Dubbo,相对比RPC的效率会比Restful高很多,如果选择微服务架构去重构整个技术体系,那么SpringCloud是当仁不让之选,它可以说是目前最好的微服务框架没有之一,并且可以断言,将来Dubbo可以很好的整合到SpringCloud中。
  四、API网关
  API网关作为微服务中所有服务的唯一入口,免得业界各类成熟的技术框架组件,在进行技术选型时,需要特别考虑是否拥有以下特性:
  高可用:网关是对外的唯一关口,必须保证724小时可用,持续提供稳定可靠的服务;
  高性能:所有的请求都会经过网关,它承受的压力是巨大的,所以必须保证它具备良好的性能,以应对高并发请求;
  安全性:网关必须能够防止外部的恶意访问,确保内部各个微服务的安全;
  扩展性:网关是一个处理非业务功能的绝佳场所,必须能够提供流量管控、协议转发、日志监控等服务,同时能够为以后对非业务功能的扩展提供良好的兼容性。
  1。Zuul
  Zuul作为SpringCloud中的核心组件之一,充当API网关的重要角色,所有请求都可以通过Zuul达到后端的应用程序、服务。Zuul提供了动态路由、监控、弹性负载和安全等特性,其核心是一系列的Filter,其作用类似于Servlet框架中的Filter,或者AOP。
  Zuul底层利用各种Filter实现了如下功能:
  动态路由:根据需要将请求动态路由到后端集群;
  身份认证和安全性:识别每个需要认证的资源,拒绝不符合要求的请求,如:鉴权;
  统计监测:在服务边界追踪并统计数据,提供精确的统计监测视图;
  压力测试:逐渐增加对集群的流量以了解其性能;
  负载卸载:预先为每种类型的请求分配容量,当请求超过容量时自动丢弃;
  静态资源处理:直接在边界返回某些响应。
  基于上述这些功能特性,使得Zuul作为API网关的不二之选。
  Zuul的逻辑架构如下图所示:
  Zuul的过滤器之间是不直接通信的,而是通过一个RequestContext的类来进行数据传统,RequestContext继承ConcurrentHashMap,使用ThreadLocal变量来记录每个Request需要传递的数据。
  Zuul的过滤器是由Groovy来实现的,这些过滤器文件被存放在ZuulServer的特定目录下,Zuul会定期轮询这些目录,修改过的过滤器会动态加载到ZuulServer中,以便过滤请求使用。
  Zuul的大部分功能都是通过过滤器来实现的,其中定义了4种标准的过滤器类型(pre、route、post、error),以满足应用于请求的不同阶段。
  (如果想更清晰深入的了解Zuul,可以参考上图的Zuul逻辑架构图,并结合Zuul源码深入研究下。)
  2。traefik
  在了解traefik之前,不妨先看看它的整体架构图,如下所示:
  从上图不难看出,traefik充当了HTTP反向代理的角色,使得发布的服务变得轻松有趣。在微服务中,实质上是一个为了让部署微服务变得更加便捷而诞生的HTTP反向代理、负载均衡工具。,它支持多种后台(Docker,Swarm,Kubernetes,Marathon,Mesos,Consul,Etcd,Zookeeper,BoltDB,RestAPI,file)来自动化、动态的应用它的配置文件设置。
  除了众多功能之外,traefik的与众不同之处还在于它会自动发现适合您服务的配置。无需维护和同步单独的配置文件,一切都会自动,实时地进行(无需重新启动,不会中断连接)。使用traefik后,你可以将更多的精力、时间花费在开发和部署上面,而不是在配置和维护其工作状态上。
  特性:
  高性能;
  无需安装其他依赖,通过Go语言编写的单一可执行文件;
  支持RestfulAPI接口;
  多种后台支持:Docker,Swarm,Kubernetes,Marathon,Mesos,Consul,Etcd;
  后台监控,可以监听后台变化进而自动化应用新的配置文件设置;
  配置文件热更新(无需重启);
  正常结束http连接;
  后端断路器;
  轮询,rebalancer负载均衡;
  RestMetrics;
  支持最小化官方docker镜像;
  后台支持SSL;
  前台支持SSL(包括SNI);
  清爽的AngularJS前端页面;
  支持Websocket;
  支持HTTP2;
  网络错误重试;
  支持Let’sEncrypt(自动更新HTTPS证书);
  高可用集群模式。
  3。OpenResty
  OpenResty是一个基于Nginx与Lua的高性能Web平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。
  OpenResty通过汇聚各种设计精良的Nginx模块(主要由OpenResty团队自主开发),从而将Nginx有效地变成一个强大的通用Web应用平台。这样,Web开发人员和系统工程师可以使用Lua脚本语言调动Nginx支持的各种C以及Lua模块,快速构造出足以胜任10K乃至1000K以上单机并发连接的高性能Web应用系统。
  OpenResty的目标是让你的Web服务直接跑在Nginx服务内部,充分利用Nginx的非阻塞IO模型,不仅仅对HTTP客户端请求,甚至于对远程后端诸如MySQL、PostgreSQL、Memcached以及Redis等都进行一致的高性能响应。
  4。Kong
  Kong是一个在Nginx中运行的Lua应用程序,并且可以通过luanginx模块实现,Kong不是用这个模块编译Nginx,而是与OpenResty一起发布,OpenResty已经包含了luanginxmodule,OpenResty不是Nginx的分支,而是一组扩展功能的模块。
  是一个ApiGateway,通过插件的形式提供负载均衡,日志记录,身份验证,速率限制,转换等功能。可以很轻松扩展功能,模块化,可以运行在任何基础设施上。
  它的核心是实现数据库抽象,路由和插件管理,插件可以存在于单独的代码库中,并且可以在几行代码中注入到请求生命周期的任何位置。很方便地为路由和服务提供各种插件,网关所需要的基本特性,Kong都如数支持:
  云原生:与平台无关,Kong可以从裸机运行到Kubernetes;
  动态路由:Kong的背后是OpenRestyLua,所以从OpenResty继承了动态路由的特性;
  熔断;
  健康检查;
  日志:可以记录通过Kong的HTTP,TCP,UDP请求和响应;
  鉴权:权限控制,IP黑白名单,同样是OpenResty的特性;
  SSL:可以为基础服务或API设置特定的SSL证书;
  监控:Kong提供了实时监控插件;
  认证:如数支持HMAC,JWT,Basic,OAuth2。0等常用协议;
  限流;
  RESTAPI:通过RestAPI进行配置管理,从繁琐的配置文件中解放;
  可用性:天然支持分布式;
  高性能:背靠非阻塞通信的nginx,性能自不用说;
  插件机制:提供众多开箱即用的插件,且有易于扩展的自定义插件接口,用户可以使用Lua自行开发插件。
  上面这些特性中,反复提及了Kong背后的OpenResty,实际上,使用Kong之后,Nginx可以完全摒弃,因为Kong的功能是Nginx的父集。
  5。对比、总结
  综上对比,从开源社区活跃度和学习成本来看,无疑是Zuul和Traefik较好;从成熟度来看,较好的是Kong、Traefik;从性能角度来看,Kong要比其他几个领先一些,从架构优势的扩展性来看,Kong丰富的插件,而Zuul是完全需要自研各类Filter,但Zuul由于与SpringCloud深度集成,使用度也很高。
  五、服务注册与发现
  服务注册与发现,是一个古老的话题,当应用开始脱离单机运行和访问时,服务注册与发现就诞生了。
  目前的网络架构是每个主机都有一个独立的IP地址,那么服务发现基本上都是通过某种方式获取到服务所部署的IP地址。
  DNS协议是最早将一个网络名称翻译为网络IP的协议,在最初的架构选型中,DNSLVSNginx基本可以满足所有的RESTful服务的发现,此时服务的IP列表通常配置在Nginx或者LVS。后来出现了RPC服务,服务的上下线更加频繁,人们开始寻求一种能够支持动态上下线并且推送IP列表变化的注册中心框架或组件。
  现如今,各类服务注册与发现的框架、组件很多(Zookeeper、Eureka、Consul、etcd等),在选择上更是眼花缭乱。在服务注册与发现的技术选型上,我觉得我们应该还是有一定遵循原则和关注要点的。通常可从以下几个方面出发,进行重点关注、抉择:
  数据一致性;
  负载均衡;
  健康检查;
  性能与容量;
  易用性;
  集群扩展性;
  用户扩展性。
  六、配置中心
  在微服务架构中,服务的数量以及配置信息的日益增多,比如各种服务器参数配置、各种数据库访问参数配置、各种环境下配置信息的不同、配置信息修改之后实时生效等等,传统的配置文件方式或者将配置信息存放于数据库中的方式已无法满足开发人员对配置管理的要求,如:
  安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏;
  时效性:修改配置,需要重启服务才能生效;
  局限性:无法支持动态调整:例如日志开关、功能开关。
  在微服务架构中,使用配置中心之前,上述的问题或麻烦,你肯定也会遇到过,所以,是否引入配置中心,取决于你是否有下面的需求:
  配置集中化统一管理;
  配置实时生效。
  一般完善的配置中心,都会从以下两个方面设计出发,以发挥配置中心的作用。
  配置实时生效:
  传统的静态配置方式要想修改某个配置只能修改之后重新发布应用,要实现动态性,可以选择使用数据库,通过定时轮询访问数据库来感知配置的变化。轮询频率低感知配置变化的延时就长,轮询频率高,感知配置变化的延时就短,但比较损耗性能,需要在实时性和性能之间做折中。配置中心专门针对这个业务场景,兼顾实时性和一致性来管理动态配置。
  配置管理流程:
  配置的权限管控、灰度发布、版本管理、格式检验和安全配置等一系列的配置管理相关的特性也是配置中心不可获取的一部分。(这也算是配置中心的高级特性作用)
  1。SpringCloudConfig
  SpringCloudConfig作为SpringCloud中的一个组件,其功能开放,可开发性强,常是各类配置中心自我研发的基石。
  从SpringCloudConfig的源码(springcloudconfigserver)中,可以看出目前支持本地存储、Git仓库存储、SVN仓库存储、数据库存储方式,其他存储方式可参考源码自行实现即可。
  以Git存储方式为例说明,SpringCloudConfig包含configserver、Git和SpringCloudBus三大组件:
  configserver提供给客户端获取配置;
  Git用于存储和修改配置;
  SpringCloudBus通知客户端配置变更。
  本地测试模式下,SpringCloudBus和configserver需要部署一个节点,Git使用GitHub就可以。在生产环境中,SpringCloudConfig,configserver需要部署至少两个节点。SpringCloudBus如果使用RabbitMQ,普通集群模式至少需要两个节点。
  Git服务如果使用GitHub就不用考虑高可用问题,如果考虑到安全性要自建Git私有仓库,整体的成本比较高。Web服务可以部署多节点支持高可用,由于Git有数据的一致性问题,可以通过以下的方式来支持高可用:
  GitKeepalived冷备模式,当主Git挂了可以马上切到备Git;
  Git多节点部署,存储使用网络文件系统或者通过DRBD实现多个Git节点的数据同步。
  2。Apollo
  Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
  Apollo分为MySQL,ConfigService,AdminService,Portal四个模块:
  MySQL:存储Apollo元数据和用户配置数据;
  ConfigService:提供配置的读取、推送等功能,客户端请求都是落到ConfigService上;
  AdminService:提供配置的修改、发布等功能,Portal操作的服务就是AdminService;
  Portal:提供给用户配置管理界面。
  本地测试ConfigService,AdminService,Portal三个模块可以合并一起部署,MySQL单独安装并创建需要的表结构。在生产环境使用Apollo,Portal可以两个节点单独部署,稳定性要求没那么高的话,ConfigService和AdminService可以部署在一起,数据库支持主备容灾。
  3。Nacos
  Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。这正是Nacos官方给出的定义:
  aneasytousedynamicservicediscovery,configurationandservicemanagementplatformforbuildingcloudnativeapplications。
  核心功能:
  动态配置服务:
  动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。
  服务发现及管理:
  动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNSBased和RPCBased(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。
  动态DNS服务:
  通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。
  Nacos部署需要NacosService和MySQL:
  NacosService:对外提供服务,支持配置管理和服务发现;
  MySQL:提供Nacos的数据持久化存储。
  单机模式下,Nacos可以使用嵌入式数据库部署一个节点,就能启动。如果对MySQL比较熟悉,想要了解整体数据流向,可以安装MySQL提供给Nacos数据持久化服务。生产环境使用Nacos,Nacos服务需要至少部署三个节点,再加上MySQL主备。
  4。对比、总结
  整体来看,Nacos的部署结构比较简单,运维成本较低。Apollo部署组件较多,运维成本比Nacos高。SpringCloudConfig易于定制化二次开发,生产高可用的成本最高。
  总的来说,Apollo和Nacos相对于SpringCloudConfig的生态支持更广,在配置管理流程上做的更好。Apollo相对于Nacos在配置管理做的更加全面,不过使用起来也要麻烦一些。Nacos使用起来相对比较简洁,在对性能要求比较高的大规模场景更适合。
  参考资料
  http:dubbo。apache。orgzhcn
  https:my。oschina。netbigdataerblog1859971?fromtimeline
  https:github。comNetflixzuulwiki
  https:traefik。cn
  http:openresty。orgcn
  https:www。cnblogs。comduanxzp9776316。html
  https:yq。aliyun。comarticles698930?utmcontentg1000053369
  https:blog。csdn。netweixin44337261articledetails89426925
  https:github。comctripcorpapollowiki
  https:nacos。iozhcn
  作者丨xcbeyond
  来源丨网址:https:www。infoq。cnuxcbeyondpublish

中国手机开拓韩国市场多年来,三星电子在韩国市场已成独霸天下之势,去年市场占有率高达72。除苹果手机外,摩托罗拉、HTC、索尼等手机品牌都相继败走韩国市场。韩国手机市场被戏称为外国品牌手机的坟墓。……勇士客场不敌湖人,科尔赛后表示士气低落,准备不充分虎扑02月24日讯今天NBA常规赛勇士客场对阵湖人的比赛已经结束,勇士以111124不敌湖人。赛后勇士主教练科尔接受采访表示:我喜欢我们前期的能量,然后我想,当赛况进展不……朝鲜第二大城市汽车很少,太阳能随处可见?说起朝鲜的城市,很多人会想到平壤。平壤是朝鲜最大的城市,也是朝鲜的首都。平壤是第一大城市,第二大城市叫开城,离板门店很近。虽然是朝鲜第二大城市,但开城和平壤相比,不是一个量级的……做藤蔓好不好一夜失眠,迷迷糊糊的做了不知道几个梦。咯吱咯吱的开门声,打断了迷糊梦。随手摸起枕边的手机,哇咔咔,九点了。惊吓中以风速穿好了衣服,洗漱完毕。随意往嘴巴中塞了几口面包,出门。打工……洛克王国来看下VIP地图长什么样的下面这几张只有从任务里进下面这些就是要VIP才能进的地图宠物分布只有《笔童》一种宠物分布三种,一个是隐藏宠物,要打地图里的宠物刷出来。就是有个五角星阵那个……昭通泸州宜宾南充港对比,谁的吞吐量更大?才是川滇第一大港?根据云南省昭通官方新闻报道,昭通港截止2022年12月20日,港口货物吞吐量正式突破1000万吨,超越四川省泸州、宜宾、南充港,成为长江上游第一大港,也成为川滇两省两省第一大港……人世间取景地美憬阁《人世间》热播,剧中出现的取景地,其中一些我也曾游历过。在大结局这一集中,秉义冬梅和姚立松相遇的酒店去年我入住过,这是长白山鲁能度假区美憬阁酒店,秉义冬梅就是站在大堂外的大平台……币市十大预测2023U型复苏USDC超USDTETH通缩等加密货币资产管理公司Bitwise在今日发布致投资者信,对2023年的加密货币市场进行10大预测。Bitwise提醒,与所有的预测一样,这些预测都不能保证必然发生,只是代表了B……彻底摊牌了?国内手机市场迎来大洗牌,苹果笑到了最后?经历了2022年的卖不动,三星想吃回头草,华为已转危为安后,国内手机市场迎来了大洗牌,本以为这场大洗牌的赢家会是国产品牌,但万万没想到,苹果或许笑到了最后!2023年刚刚……蹲点深一度丨两高企业赶考记技改越早红利越足技改带来的结果是,氮氧化物排放由原来的82毫克立方米降低到目前的43毫克立方米,烟尘由原来的7毫克立方米降低到目前的2毫克立方米;固体废弃物综合利用,煤矸……旅游业面临重新大洗牌这些年,景区跟随着整体经济环境公转的同时,更在不断地自转。国家5A级旅游景区数量,图片源于文旅部官网旅游业在中国的产业地位不容置疑,虽然很多投资机构对文旅市场持观望……勇士报价赛斯库里!篮网勇士马刺酝酿三方交易北京时间12月15日,NBA常规赛正在如火如荼的进行之中,就在刚刚结束的一场焦点战中,勇士客场背靠背第二战碰上步行者,汤普森轮休、维金斯持续因伤缺阵,当家球星斯蒂芬库里前三节就……
吴兴涵聊天记录曝光中超是假球,一场能挣40万,国足拉胯太久了这一次国足,因为吴兴涵又一次火了。难得这次是球员自己作死,自曝家丑!吴兴涵在深陷出轨门之后,涉事女主陈晨出乎意料地爆出了一个大雷:吴兴涵参与打假球、一场球收益三四十……广东举办滑雪社会体育指导员竞赛,助力冰雪运动高质量发展3月22日至23日,2022年广东省体育行业职业技能竞赛滑雪社会体育指导员竞赛在广州热雪奇迹举办。来自全省的百余名滑雪社会体育指导员展开了同场竞技,充分展示了我省优秀滑雪社会体……新华全媒杭州小古城村大樟树下议发展错落有致的农家洋房、干净整洁的柏油村道、文艺古朴的低矮院墙位于浙江省杭州市西郊的余杭区径山镇小古城村距离市中心30余公里,因村内的全国重点文物保护单位小古城遗址而得名,近年来成……5款新人必备的电脑软件1。优效日历这是一款桌面日历软件,界面简洁,显示全面。这个日历会显示节日、法定节假日加班、调休、抢票、排班等,适合我们在工作中使用,还可以定制桌面天气、桌面倒数日、……演员李嘉明不带证件做核酸被拒,与医护人员有口角,现场视频曝光7月14日,演员李嘉明在个人账号上怒发视频,吐槽自己外出工作的时候,遭到了不公平的待遇。事情应该是李嘉明去做核酸检测,不过与现场的工作人员发生了冲突产生了口角,看视频,李……绝地求生转为免费后大成功!每日新增用户超8万《绝地求生》发行商Krafton最近发布了一份2022年上半年的财报,其中透露《绝地求生》在今年1月转为免费后,每天都有超过8万名新用户加入。据悉,Krafton六个月的……湖人队目前最现实的5笔交易!威少单换沃尔!拉塞尔重回湖人美媒列出湖人队目前最现实的5笔交易明尼苏达森林狼队获得了一名新的控球后卫明尼苏达森林狼队得到:拉塞尔威斯布鲁克洛杉矶湖人队得到:德安吉洛拉塞尔、马利克比斯利……云飞被传抛弃妻女,和小12岁郭津彤结婚,他真的薄情寡义?文叨儿说2012年云飞在《星光大道》中凭借精彩的演出一炮而红,也因此彻底走进大家的视线中。然而在他成名后没几年,他就和妻子高玥离婚转头娶了郭津彤为妻,从此被冠以现代……名人的吊带裙,从90年代到现在吊带裙经受住了时间的考验是有原因的,简单而多变,它提供了即时的和毫不费力的优雅。格温妮丝帕特洛(GwynethPaltrow)、詹妮弗安妮斯顿(JenniferAniston)……7个月宝宝尿路感染!私处清洁不是洗洗就行,做不对坑娃一辈子!小宝宝发低烧,很多家长的第一反应是感冒,其实,还有一种可能,就是尿路感染。比如群里有位妈妈,说几天前,7个月大的女儿突然开始发烧,也不喝奶了,而且低烧是反反复复,甚至后面……东强西弱?库里末节8中1,西部第一大爆冷输球,篮网还没出手呢勇士终于输球了,黄蜂在紧张的第四节中,连续打中关键球,犯错的次数很少,特别是罗齐尔,成为了赢球的关键先生,让人印象深刻的是最后时刻的跳球,他跳赢追梦格林,为黄蜂争取了赢球的机会……开着我的小五菱乡村游周末了开着我的小车准备周边转转,去乡村玩一圈,听说有个小村庄据说变成了景区,很有特色,都是过去小时候村里的老味道,这几年也非常流行乡村游,我得去看看体验一番农家乐的感觉,而且我……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网