图解Dubbo,Dubbo服务提供者详解

今天详细的分解一下Dubbo服务提供者,实现快速入门,丰富个人简历,提高面试level,给自己增加一点谈资,秒变面试小达人,BAT不是梦。


(资料图片仅供参考)

三分钟你将学会:

什么是服务提供者服务提供者的配置服务提供者集群服务提供者的网络通信服务提供者的线程模型服务提供者的动态配置

当今分布式系统已经成为企业中不可或缺的一部分。

在分布式系统中,服务网格是一个重要的组成部分。服务网格用于管理和调度服务,以确保系统的可用性和可扩展性。

其中 Dubbo 是一个流行的服务网格框架,它提供了一种简单、可靠、高性能的方式来构建分布式系统。

在 Dubbo 中,服务提供者是框架的核心组件之一,它负责提供服务并将服务暴露给外部应用程序

本文将介绍Dubbo 中的服务提供者,包括服务提供者的定义、服务暴露的方式、服务注册的实现、服务提供者的容错处理、服务提供者集群以及服务提供者的网络通信

一、服务提供者

Dubbo 服务提供者是指使用 Dubbo 协议提供服务的 Java 程序,它是 Dubbo 服务架构的核心部分。服务提供者通过在服务消费方和提供方之间提供 RPC(远程过程调用) 服务,实现了服务之间的松耦合和低耦合。

在 Dubbo 服务架构中,服务提供者主要负责

将服务暴露给服务消费方;并将服务消费方的请求转化为 Dubbo 协议的请求;然后将响应返回给服务消费方。

Dubbo服务提供者启动流程时序图:

Dubbo服务提供者启动流程

Dubbo服务提供者关闭流程时序图:

Dubbo服务提供者关闭流程

1、Dubbo服务提供者的定义

服务提供者是 Dubbo 框架的核心组件之一,它是负责提供服务的应用程序。

在 Dubbo 中,服务提供者的定义如下:

服务提供者是一个 Java 类,它实现了 Dubbo 服务接口。服务提供者必须实现DubboRPC接口,该接口定义了服务调用的基本逻辑。服务提供者必须实现getService()方法,该方法返回服务实例的引用。

在 Dubbo 中,服务暴露的方式有两种:广播式服务暴露和点式服务暴露

​广播式服务暴露是指服务提供者向所有注册的客户端广播服务发布信息,客户端根据服务名称和版本号等信息自动发现服务。

点式服务暴露是指服务提供者向单个客户端广播服务发布信息,客户端主动请求服务。

2、服务暴露的方式

在 Dubbo 服务架构中,服务提供者可以将服务暴露为 HTTP 服务、RPC 服务或者二者的结合体。

具体来说,服务提供者可以通过以下几种方式暴露服务:

HTTP 服务:服务提供者可以通过 HTTP 协议提供服务,服务消费方可以通过 HTTP 请求的方式调用服务提供者的服务。RPC 服务:服务提供者可以通过 Dubbo 协议提供 RPC 服务,服务消费方可以通过 Dubbo 协议的 RPC 请求调用服务提供者的服务。HTTP+RPC 服务:服务提供者可以通过 HTTP 协议提供 RPC 服务,服务消费方可以通过 HTTP 请求的方式调用服务提供者的 RPC 服务。

Dubbo服务提供者暴露服务流程时序图:

Dubbo服务提供者暴露服务流程

3、服务注册的实现

Dubbo 服务注册是指将服务提供者的信息注册到 Dubbo 注册中心,让服务消费者可以通过注册中心查找到服务提供者并进行调用。

下面是一个简单的 Dubbo 服务注册实现示例,基于 Apache Barrow 框架:

(1)创建服务接口

在这个示例中,我们定义了一个名为MyService的服务接口,它有两个方法:hello()和world()。

@Service  public interface MyService {      String hello() throws Exception;    String world() throws Exception;  }
(2)实现服务接口

在这个示例中,我们实现了MyService服务接口,并添加了一个hello()方法。

@Component  public class MyServiceImpl implements MyService {      @Override      public String hello() throws Exception {          System.out.println("Hello from MyServiceImpl!");          return "Hello, world!";      }  }
(3)注册服务

在这个示例中,我们将MyService服务接口注册到 Dubbo 注册中心。

import org.apache.dubbo.common.URL;  import org.apache.dubbo.common.constant.CommonConstants;  import org.apache.dubbo.common.extension.ExtensionLoader;  import org.apache.dubbo.common.name.NameFactory;  import org.apache.dubbo.common.service.ServiceLoader;  import org.apache.dubbo.registry.Registry;  import org.apache.dubbo.registry.web.WebRegistry;public class DubboBootstrap {    public static void main(String[] args) throws Exception {          // 创建 Registry          Registry registry = new WebRegistry();          // 设置注册中心 URL          URL url = URL.valueOf("dubbo://localhost:9090/my-service?registry=" + registry);          // 创建 NameFactory          NameFactory nameFactory = new NameFactory();          // 注册中心配置          ExtensionLoader.loadExtensions(registry, "dubbo.extension.provides");          // 注册服务          registry.bind(url, new MyService());          // 启动服务          System.out.println("Dubbo Bootstrap started...");      }}

在这个示例中,我们首先创建了一个WebRegistry,它使用WebServlet监听端口9090,用于向注册中心注册和查找服务。然后,我们将MyService服务接口注册到注册中心。最后,我们启动了 Dubbo 服务。

(4)服务消费者

在这个示例中,我们将创建一个服务消费者,它使用 Dubbo 注册中心查找服务并调用服务接口。

import org.apache.dubbo.common.URL;  import org.apache.dubbo.common.constant.CommonConstants;  import org.apache.dubbo.common.extension.ExtensionLoader;  import org.apache.dubbo.common.name.NameFactory;  import org.apache.dubbo.common.service.ServiceLoader;  import org.apache.dubbo.registry.Registry;  import org.apache.dubbo.registry.consumer.consumer.ConsumerRegistry;public class DubboConsumer {    public static void main(String[] args) throws Exception {          // 创建 Registry          Registry registry = new ConsumerRegistry(new HashMap());          // 注册中心 URL          URL url = URL.valueOf("dubbo://localhost:9090/my-service?registry=" + registry);          // 查找服务          ServiceLoader serviceLoader = ServiceLoader.load(MyService.class);          for (MyService service : serviceLoader) {              URL serviceUrl = service.getUrl();              registry.bind(serviceUrl, service);          }          // 启动服务          System.out.println("Dubbo Consumer started...");      }}

在这个示例中:

我们创建了一个ConsumerRegistry,它使用HashMap存储注册中心的信息。然后,我们将MyService服务接口注册到注册中心。最后,我们使用ServiceLoader查找服务,并将其绑定到注册中心。二、服务提供者的配置1、服务提供者的XML配置

XML 配置是 Dubbo 服务架构中最常用的配置方式。服务提供者可以通过 XML 文件来配置服务相关的信息,如服务接口、服务实现、负载均衡、超时时间等。

XML 配置如下:

                                                                
2、服务提供者的注解配置

注解配置是 Dubbo 服务架构中另一种常用的配置方式。服务提供者可以通过注解来配置服务相关的信息,如服务接口、服务实现、负载均衡、超时时间等。

注解配置如下:

@ApplicationPath("path1")  @Name("demoService")  @Version("1.0")  public class DemoService implements DemoService {      @Override      public String sayHello(String hello) {          return "Hello, " + hello + "!";      }  }
3、服务提供者的容错处理(1)失败重试机制

失败重试机制

解释:

客户端(Client)向Dubbo服务提供者(Provider)发送请求。如果请求成功,服务提供者将返回响应。如果请求失败,则Dubbo服务提供者将通过熔断器(Circuit Breaker)返回服务熔断响应。如果请求过载,Dubbo服务提供者将通过熔断器返回请求过载响应。如果服务降级,则Dubbo服务提供者将返回服务降级响应,使用线程池(Thread Pool)处理请求。(2)隔离机制

隔离机制

Dubbo服务提供者的容错处理的隔离机制实现了服务的隔离,当一个服务出现问题时,该服务的容错处理机制会隔离该服务,以防止问题扩大到整个应用程序中。隔离容器可以是一个独立的线程池,这个线程池只处理隔离的服务,以此来保护应用程序的其他部分。

(3)超时机制

在 Dubbo 服务架构中,服务提供者支持超时机制,以保障服务的响应速度和可用性。超时机制可以通过配置服务提供者的超时时间参数来实现。

下图描述了 Dubbo 服务提供者的容错处理的失败超时机制的流程。在该图中:

服务提供者首先向服务注册中心注册服务;然后消费者通过服务注册中心查找到服务提供者列表,向服务提供者发送请求;服务提供者在处理请求时,如果请求超时,会返回超时响应;否则,会返回正常响应。

超时机制

三、服务提供者集群1、集群容错模式(1)Failover Cluster(失败自动切换)

Failover Cluster是Dubbo默认的集群容错模式,它适用于可重试的失败场景。

在该模式下,Dubbo会自动地将调用失败的请求重试到其他的服务提供者上,直到其中一个服务提供者成功返回为止。

失败自动切换

(2)Failfast Cluster(快速失败)

Failfast Cluster适用于非幂等性的请求场景

在该模式下,Dubbo只会尝试调用一次服务提供者,如果调用失败则立即返回失败结果,不会进行重试。

快速失败

(3)Failsafe Cluster(失败安全)

Failsafe Cluster适用于非关键性请求场景。

在该模式下,Dubbo会直接忽略服务提供者的异常,将异常视为服务调用失败,并将失败结果返回给调用方。

失败安全

(4)Failback Cluster(失败自动恢复)

Failback Cluster适用于对可靠性要求较高、但不想阻塞服务调用的场景

在该模式下,Dubbo会将调用失败的请求保存到本地,定时重新尝试调用服务提供者,直到成功返回为止。

失败自动恢复

2、集群容错策略

在 Dubbo 服务提供者集群中,常见的容错策略包括如下几种:

轮询策略:在集群中选择一台服务器作为主服务器,其他服务器作为从服务器。当主服务器出现故障时,从服务器会自动切换到主服务器,并继续提供服务。负载均衡策略:在集群中将所有服务提供者部署在不同的节点上,并通过负载均衡算法来均衡服务提供者的负载。容错连接策略:在集群中将所有服务提供者部署在不同的节点上,并通过集群间的通信来保障集群的稳定性和可用性。3、集群容错实现

在 Dubbo 服务提供者集群中,常用的容错实现方式包括如下几种:

服务注册与发现:将服务提供者部署在注册中心上,服务消费者可以通过注册中心来查找服务提供者,并提供服务。服务网关:在服务提供者和服务消费者之间加入服务网关,网关作为服务提供者和消费者之间的接口,负责处理服务调用和容错处理。消息队列:将服务提供者和消费者之间的通信通过消息队列来实现,当服务提供者出现故障时,可以通过消息队列来传递消息,继续提供服务。集群间通信:将服务提供者部署在不同的节点上,通过集群间通信来保障集群的稳定性和可用性。常用的集群间通信方式包括负载均衡、消息队列、Zookeeper 等。四、服务提供者的网络通信1、Dubbo基于TCP通信

Dubbo 是基于 TCP 通信的,它支持多种通信模式,包括经典模式、RPC 模式和 HTTP 模式。在经典模式下,Dubbo 使用 TCP 协议进行通信,服务提供者和消费者之间的通信是通过套接字进行的。在 RPC 模式下,Dubbo 使用 Dubbo 协议进行通信,服务提供者和消费者之间的通信也是通过套接字进行的。在 HTTP 模式下,Dubbo 使用 HTTP 协议进行通信,服务提供者和消费者之间的通信是通过 HTTP 请求和响应进行的。

2、通信级别的概念

在 Dubbo 中,通信级别指的是服务消费者和服务提供者之间的通信级别。

具体来说,通信级别包括如下几个:

接口级别:指服务消费者和服务提供者之间的接口级别通信,也就是服务消费者通过接口调用服务提供者的方法。方法级别:指服务消费者和服务提供者之间的方法级别通信,也就是服务消费者通过接口调用服务提供者的方法,服务提供者在接收到调用后,执行具体的服务逻辑。服务级别:指服务消费者和服务提供者之间的服务级别通信,也就是服务消费者通过调用服务提供者的服务,服务提供者在接收到调用后,执行具体的服务逻辑。3、通信协议

在 Dubbo 中,服务消费者和服务提供者之间的通信采用 Dubbo 协议进行。Dubbo 协议采用 JSON 格式进行传输,支持远程调用和事件监听等功能。

具体来说,Dubbo 协议包括以下内容:

服务接口信息:包括服务接口的类名、版本号、方法信息等。服务实现信息:包括服务实现的类名、版本号、方法信息等。调用参数信息:包括调用方法的参数类型、参数值等。调用结果信息:包括调用方法的返回值类型、返回值值等。4、Dubbo默认的序列化方式

在 Dubbo 中,默认的序列化方式为 Java 序列化。Java 序列化是一种将对象序列化为字符串的序列化方式,它支持对象在内存中的序列化和反序列化,可以保证对象在不同平台和不同语言之间进行传输和交换。但是,Java 序列化在传输过程中可能会出现数据丢失和变形等问题,因此需要谨慎使用。

5、序列化方式的扩展支持

Dubbo 提供了多种序列化方式,包括 JSON 序列化、XML 序列化、化石序列化等。服务提供者可以根据需要,自行选择序列化方式。同时,Dubbo 还提供了序列化方式的扩展支持,可以自定义序列化方式,满足不同的需求。

6、Dubbo协议的传输方式

Dubbo 协议采用 HTTP 协议进行传输,支持客户端和服务器之间的通信。

具体来说,Dubbo 协议的传输方式包括如下几种:

GET 方式:客户端向服务器发送 GET 请求,服务器返回请求结果。POST 方式:客户端向服务器发送 POST 请求,服务器接收请求数据,并根据请求数据执行相应的操作。PUT 方式:客户端向服务器发送 PUT 请求,服务器将请求数据保存到服务器中。DELETE 方式:客户端向服务器发送 DELETE 请求,服务器删除请求数据。7、传输方式的扩展支持

Dubbo 协议的传输方式可以通过自定义 HTTP 客户端和服务器进行扩展支持。自定义 HTTP 客户端和服务器可以实现自定义的传输方式,满足不同的需求。同时,Dubbo 还提供了 HTTP 传输方式的扩展支持,可以自定义 HTTP 传输方式,满足不同的需求。

五、服务提供者的线程模型1、什么是线程模型

线程模型是指描述计算机程序中线程 (也称为进程或实例) 如何执行的模型。在一个计算机程序中,线程是程序执行的基本单位。每个线程都有自己的堆栈、变量和执行顺序,它们可以独立地运行,直到它们被阻塞或超时为止。线程模型描述了线程如何协作、同步和通信,以确保程序的正确性和可靠性。

2、Dubbo线程模型

Dubbo 线程模型是 Dubbo 框架中用于实现服务消费和服务提供者之间通信的线程模型。在 Dubbo 中,服务消费者和服务提供者之间是通过线程池进行的,每个线程池代表一个服务消费者或服务提供者,线程池中的线程负责执行服务消费者的请求或服务提供者的服务。

3、线程池模型

线程池模型是指服务提供者在执行服务请求时使用的线程模型。在线程池模型中,服务提供者会创建一个或多个线程,用于执行服务请求。每个线程都拥有自己的堆栈和变量,当服务请求结束时,服务提供者会自动销毁线程,释放资源。

4、单一线程模型

单一线程模型是指服务提供者在执行服务请求时使用的线程模型。在单一线程模型中,服务提供者只会创建一个线程,用于执行服务请求。当服务请求结束时,服务提供者不会自动销毁线程,而是等待线程完成任务后才会销毁线程。

5、伸缩线程模型

伸缩线程模型是指服务提供者在执行服务请求时使用的线程模型,它可以根据实际需求自动增加或减少线程的数量。在伸缩线程模型中,服务提供者会创建多个线程,当服务请求数量增加时,服务提供者会自动增加线程的数量,以保证服务请求的及时处理。当服务请求数量减少时,服务提供者会自动减少线程的数量,减少资源浪费。

六、服务提供者的动态配置1、配置方式的概述

静态配置是指在代码中直接编写服务提供者的配置信息,例如服务接口的 IP 地址、端口号、协议、依赖库等信息。这种方式的优点是简单易用,可以快速地搭建服务提供者,但是在运行时无法根据实际情况进行修改。

动态配置是指在运行时根据请求的实际情况动态地配置服务提供者。这种方式的优点是灵活性高,可以根据实际情况进行修改,但是在代码量上会多一些。

2、动态配置方式

Dubbo 提供了多种方式来实现动态配置,其中最常用的方式是使用RegisterUtil.register()方法进行注册。在使用动态配置时,需要先创建一个RegisterUtil对象,然后使用该对象进行注册。注册完成后,可以通过调用RegisterUtil.unregister()方法来取消注册。

另外,Dubbo 还支持使用 XML 文件进行配置,可以使用 XML 文件来存储服务提供者的配置信息。XML 文件的格式如下:

        

在上面的 XML 文件中,interface属性指定了服务接口的名称,name属性指定了服务的名称,registry-address属性指定了服务注册中心的连接地址,dubbo:reference属性指定了服务依赖的对象。

3、配置规则

Dubbo 的配置规则主要包括以下几个方面:

服务接口的命名空间:服务接口的命名空间指定了服务接口的命名空间,例如com.example.demo。服务名称:服务名称指定了服务的名称,例如demoService。服务注册中心:服务注册中心指定了服务注册的中心地址,例如localhost:20888。服务依赖库:服务依赖库指定了服务依赖的其他库,例如com.example.demo.Dao.。4、 配置规则的实现

在实现服务提供者的配置信息时,需要按照上述规则进行编写。例如,下面是一个符合规则的服务提供者的配置信息:

@Component  public class DemoService implements Service {       @Override      public void run(String name, Map params) throws Exception {          System.out.println(name + " is running...");      }  }@Component  public class DemoDao implements Dao {       @Override      public void doSomething(String name) throws Exception {          System.out.println(name + " is done.");      }  }@Configuration  public class DemoConfig {       @Bean      public Service service() {          return new DemoService();      }       @Bean      public Dao dao() {          return new DemoDao();      }  }

在上面的代码中,@Component注解标记了DemoService和DemoDao两个组件,并且它们都实现了Service接口。@Configuration注解标记了DemoConfig类,它包含了两个@Bean注解,分别标记了DemoService和DemoDao组件的注入点。

本文转载自微信公众号「哪吒编程」,可以通过以下二维码关注。转载本文请联系哪吒编程公众号。

标签:

AITO问界亮相上海车展,以智能狠活“卷”出新境界 环球快资讯

4月18日,备受瞩目的上海国际车展正式开幕,本次车展以“拥抱汽车行业新时代”为主题,势要为国内消费者...

04-19 11:16:37

上海联和投资完成发行10亿元公司债,利率最高为3.46%_天天看点

本期债券品种二的最终发行规模为人民币8亿元,票面利率为3 46%。

04-19 10:54:52

中国医学科学院肿瘤医院头颈外科主任医师李正江:早诊早治 守护甲状腺健康

甲状腺结节对健康影响有多大?为什么患甲状腺癌的人越来越多?在第29个全国肿瘤防治宣传周到来之际,中国医

04-19 10:15:32

自淄博烧烤以后,为什么多出很多有关山东和淄博的负面问题?-全球快播

自淄博烧烤以后,为什么多出很多有关山东和淄博的负面问题?-风大 可稍息否的回答-知乎https: www zh

04-19 09:58:56

借力数字化 “千年药都”安国打造现代“国际范儿”

河北省安国市,古称祁州,素有“千年药都”之称,因历史悠久的药市交易文化而享誉海内外。明代这里是长...

04-19 09:42:04

【文化传播】讲好眉山历史 弘扬眉山文化——眉山史志馆开馆半年接待参观场次约100场近2000人次 环球速看料

【文化传播】讲好眉山历史弘扬眉山文化——眉山史志馆开馆半年接待参观场次约100场近2000人次

04-19 09:25:28

环球热资讯!售价28.89-34.99万元 国产全新宝马X1开启订购

日前,我们从经销商渠道获悉,国产全新宝马X1现在已经开启订购,并且也已经能够从官网上看到国产全新宝马X1

04-19 09:11:20

松井股份(688157)4月18日主力资金净卖出953.24万元

截至2023年4月18日收盘,松井股份(688157)报收于88 15元,下跌9 48%,换手率3 15%,成交量1 11万手,成交额1 01亿元。

04-19 08:44:12

环球新动态:发论文还是生孩子,女性在学术界会遭遇什么?听几位妈妈教授说

发论文还是生孩子,女性在学术界会遭遇什么?听几位妈妈教授说

04-19 08:24:33

一季度增长4.1%!商品房销售额增速一年来首次回正

4月18日,国家统计局公布了《2023年1~3月份全国房地产市场基本情况》显示,一季度全国房地产开发投资25974

04-19 08:09:28

马陆虫最大克星_马陆虫

1、马陆也是叫千足虫,不咬人,但是不要用手来触摸它,因为千足虫虽然不咬人,但触摸摆弄它时可分泌出能引起

04-19 07:43:34

今日播报!上海生物医药产业规模今年目标超9000亿元

本报上海4月18日电(记者沈文敏)今天,“上海市生物医药产业投资促进伙伴计划”正式启动,并为首批伙伴授...

04-19 07:14:10

今日k111次列车途经哪里_k1115次列车途径那些站

1、k1115次列车的停靠站为:1 北京西、高碑店、保定、定州、石家庄北、太原。2、2 交城、文水、汾阳、吕梁

04-19 06:52:07

4月18日基金净值:华夏聚利债券A最新净值1.82,涨0.05%

4月18日,华夏聚利债券A最新单位净值为1 82元,累计净值为1 82元,较前一交易日上涨0 05%。历史数据显示该

04-19 06:28:15

远上寒山石径斜是什么意思_这句诗的含义|全球今亮点

欢迎观看本篇文章,小柴来为大家解答以上问题。远上寒山石径斜是什么意思,这句诗的含义很多人还不知道,现

04-19 06:02:22

环球报道:【乘风破浪】杨赛南:青春不被定义,奋斗即为姓名

据南通市人民检察院:杨赛南,通州湾示范区检察院检察综合管理部副主任。2014年毕业于西南政法大学,同年考

04-19 05:48:45

6条福建周边最火爆自驾游路线攻略推荐_今日热议

6条福建周边最火爆自驾游路线攻略推荐

04-19 05:01:02

当前快看:皖新传媒(601801):4月18日北向资金增持2.33万股

4月18日北向资金增持2 33万股皖新传媒。近5个交易日中,获北向资金减持的有4天,累计净减持112 79万股。近2

04-19 04:45:50

2023年4月18日山东省甲基丙烯酸异丁酯(IBMA)价格最新行情预测

据中国报告大厅对2023年4月18日山东省甲基丙烯酸异丁酯(IBMA)价格最新走势监测显示:2023年4月18日山东省甲

04-19 04:16:30

再见拜仁!7000万飞翼或投皇马,1.3亿攻击手有望加盟_全球新消息

目前,奥斯梅恩已经引起了曼联、拜仁、巴黎等豪门的关注,那不勒斯希望以不低于1 3亿欧元的价格将这位当家

04-19 03:56:55

即时看!coco谈和谢贤分手原因:谢贤不行了每次房事只能3分钟,满足不了我

coco谈和谢贤分手原因:谢贤不行了每次房事只能3分钟,满足不了我,谢贤,分手,周星驰,coco,驯养动物,动画产业

04-19 03:33:05

如何登录辽宁高考志愿填报系统怎么用

1、如何登录辽宁高考志愿填报系统追踪从网上确认从书面通知确认2、辽宁如何登录高考志愿填报系统辽宁省适应

04-19 03:01:25

谁把游客练成了“特种兵”?

最近文旅市场火了,而随之火爆的还有一个新词——“特种兵式旅游”。近日,记者发现,“特种兵式旅游”...

04-19 02:51:53

(5)(实教同人)栉田桔梗的两张面庞 第一章 第四节上

“黑野同学,有事情向你汇报呢。”黑野惠里刚走到座位旁还没来得及坐下,就听到了栉田桔梗拖着长长的尾...

04-19 02:17:34

全球热资讯!视频转成音频的软件手机_视频转音频手机软件

你们好,最近小未来发现有诸多的小伙伴们对于视频转成音频的软件手机,视频转音频手机软件这个问题都颇为感

04-19 01:50:37

当前速看:“泄密门”后,美空军国民警卫队“00后”再被捕:想当杀手赚钱,却遭“钓鱼执法”

报道称,加西亚早在2月16日就在该网站填写了相关资料,如自己的姓名、电子邮箱地址和电话号码。在2月20日发

04-19 01:51:08

视点!苹果手机截屏快捷键_苹果截屏快捷键

1、打开手机设置。2、进入设置页面后,找到并点击辅助功能。3、然后选择触摸。4、进入页面后,点击辅助触摸

04-19 01:12:42

河南又发12条措施促消费

河南又发12条措施促消费,

04-19 00:39:39

天风证券给予中国建筑买入评级 地产拖累较多 非地产业务增长强劲 自由现金流较多改善 目标价格为9.49元 天天热消息

天风证券04月18日发布研报称,给予中国建筑(601668 SH,最新价:6 5元)买入评级,目标价格为9 49元。评级

04-19 00:28:16

成本管控加强,产能加速扩张

第一时间提供各大券商研究所报告,最大程度减少个人投资者与机构之间信息上的差异,使个人投资者更早的了解

04-18 23:49:52

环球今头条!弃暗投明打一个数字_弃暗投明术

1、起手有可以直接变啊,小明减费之后压制能力很大的建议多过一些牌再变,前期变虽说有可能加快节奏,但更

04-18 23:16:36

速读:快来看!1只新债下周将公布中签结果(4月24日-4月28日)

快来看!1只新债下周将公布中签结果(4月24日-4月28日),下周,将有1只新债公布中签号码,为晶科能源可转债

04-18 23:14:11

今日聚焦!2023年济南千佛山三月三民俗文化庙会时间

“三月三”庙会的传统经典依然保留,届时邀请戏曲艺术团及地方民间艺术表演团体举办文艺演出活动。

04-18 22:58:30

【环球聚看点】发挥标准引领作用至为关键

标准引领是一个国家步入高质量发展、参与高质量竞争的重要标志。谁的技术成为标准,谁制定的标准为世界所认

04-18 22:40:46

特斯拉看不上的碳化硅半导体:将暴涨30倍

特斯拉看不上的碳化硅半导体:将暴涨30倍

04-18 21:56:49

恒立钻具:2022年归母净利同比下降35.61%_环球快资讯

恒立钻具(836942)发布了2022年年度业绩报告,公司2022年公司实现营业收入2 04亿元,同比下降5 91%;归母

04-18 21:03:27

全球即时看!北京天空湛蓝,怀柔怀九河美成了童话世界

今日天空湛蓝,空气质量转优。沿着怀柔区怀长路一路向西,可见两侧春花盛开,绿树成荫。路旁穿林而过的怀九

04-18 20:26:00

数据复盘:18亿流入通信设备 机构抢筹海信家电

【数据复盘:18亿流入通信设备机构抢筹海信家电】今日通信设备、保险、光伏设备等板块主力净流入靠前,其中

04-18 19:39:30

打新必看 | 4月19日两只新股上市,会破发吗?

1恒尚节能沪市主板股票代码603137发行价格1590发行市盈率2342行业市盈率6248发行规模519亿元主营业务建筑幕

04-18 19:07:38

当前时讯:大众汽车展示科技实力:智能纯电轿车首秀2023上海车展

在本次大众ID之夜活动上,大众汽车品牌最新纯电旗舰轿车ID 7进行了全球首秀,展示出了该品牌在电动化和智能

04-18 19:00:20

晶澳科技: 2022年年度权益分派实施公告

晶澳科技:2022年年度权益分派实施公告

04-18 18:43:33

视焦点讯!丹尼斯 理查德兹(丹尼斯理查兹)

丹尼斯理查德兹,丹尼斯理查兹这个很多人还不知道,现在让我们一起来看看吧!1、尼斯·理查兹 丹妮丝理...

04-18 18:19:35

金山办公将在武汉建立全球业务总部 要闻

金山办公将在武汉建立全球业务总部

04-18 18:02:52

今日热门!资本圆桌快讯 | 贺国良:代建不会成为地产公司的主赛道

2023观点资本圆桌?现场快讯。在“不良资产处置重构”圆桌讨论会中,北京金诚同达(上海)律师事务所贺国...

04-18 17:54:01

环球百事通!快讯2023-04-18 14:23:13

4月18日电,英国石油公司首席经济学家称,在最近欧佩克+石油减产后,预计2023年下半年石油市场将收紧。

04-18 17:14:35

周公解梦梦见狗屎弄了一身_周公解梦梦见狗屎

1、梦见自己踩到狗屎,预示你幸运的事情将会降临到自己的身上,让自己感到很惊喜,也可能是交上好朋友,在困境

04-18 16:40:20

全球观焦点:4月18日隆平高科发生3笔大宗交易 成交金额7428.75万元

近三个月该股共发生3笔大宗交易,合计成交5 25万手,折价成交3笔。该股近期无解禁股上市。

04-18 16:39:42

世界新动态:古叙利亚文明特展山西开展 展现人类文明多样性

韦亮摄图为民众参观公元2世纪罗马时期的石灰石雕像

04-18 15:48:04

驾一叶之扁舟举匏樽以相属寄蜉蝣于天地渺沧海之一粟翻译_寄蜉蝣于天地渺沧海之一粟翻译

1、像蜉蝣一样将短暂的生命寄托在天地之间,渺小的就像大海里的一粒粟。本文分享完毕,希望对大家有所帮助。

04-18 15:30:31

橡胶促进剂MBTS商品报价动态(2023-04-18)

交易商品牌 产地交货地最新报价橡胶促进剂MBTS 含量99%,MBTS济南鑫厚商贸有限公司科迈山东省18000元 吨

04-18 15:21:28

世界滚动:拉力绳使用视频_拉力绳使用方法
世界今头条!库里谈小萨博尼斯受伤的可能性:他是个硬汉 肯定会没事的
赢鼎教育高考报志愿(赢鼎教育会员登录) 环球速递
京东零售“巨震”,电商迎新一轮混战|钛媒体焦点
豫剑执行|百万网友见证宛郑联动合解“执行难”
中金:短期内高股息、低估值的国有大行有望继续重估|快报
天天观焦点:小米13 Ultra用上华星光电C7屏幕!雷军:国产屏超越行业标杆
滚动:如何油漆木板和板条壁板
环球速递!饲养员用竹竿打大熊猫“暖暖” 园方回应:永不允许此人养熊猫
曾经“寸土寸金” 现在无人问津 元宇宙地产变“烂尾楼” 微头条
全球热消息:狗狗鱼刺卡在牙里妙招狗狗 宠物狗卡鱼刺
*ST海伦: 惠州连硕在建工程资产评估报告 快看
环球今头条!DRACONITE官网_draconite是什么档次
大众汽车(VWAGY.US)推出首款全电动轿车ID.7 争夺中国市场份额
黑龙江2023初级会计考试准考证啥时间打印
南极电商:公司已按照要求于历年年报中对定期存款金额进行了披露,定期存款不存在担保及贷款情况 观热点
常宁市宜阳街道:消防安全进校园,筑牢生命“防火墙”|热文
中国漂流联赛西藏工布江达站闭幕 重庆选手获两项冠军
Excelize 发布 2.7.1 版本,Go 语言 Excel 文档基础库_环球热文
焦点讯息:福州SM项目规划建筑景观设计公示 总建筑面积近20万平方米
环球今日讯!偷偷撒狗粮!知情人透露窦骁何超莲伴手礼创意来源于两人的情诗
当前头条:南安镇:打好“三张牌” 助力招聘到村工作大学生“奋楫扬帆”
通讯!经销商“硬刚”零跑汽车跟踪:销量数据疑似造假,强迫经销商上牌拿国补
济南本周气温“上蹿下跳”,最高温直蹿30℃,接着直接“打4折”
全球热点!486家企业入列山西创新型中小企业
“贼心”不死!美军从叙利亚东北部偷盗数百吨石油
中国奥园与西安航投科创控股集团签署战略合作协议-天天快报
关注公众号才能开发票怎么破?专家:有权拒绝或举报
讲学习的古语_不断学习的古语|全球微头条
世界微资讯!电动牙刷的好处和坏处 电动牙刷
泰晤士报:如果没有绝对正确的转会,贝林厄姆宁愿留队至2024_天天快看点
今日热文:张志磊引外媒热议!沃伦亲承将继续合作 美媒:佩雷拉陪练助他创奇迹
常凯导演过哪些作品_你知道了吗 今日要闻
350/14的简便计算 3504怎么简便运算 天天热头条
春江潮水连海平下一句_春江潮水连海平下一句 全球新要闻
全民国家安全教育日|消防演练进校园,提高意识护安全
营造和谐邻里氛围,感受生活之美!宝山这里开展亲子活动_焦点消息
当前快讯:花瓣浏览器如何设置字体样式 华为浏览器设置字体和样式教程
世界讯息:报君黄金台上意提携玉龙为君死中的玉龙指的是_报君黄金台上意提携玉龙为君死
济南交通违章查询网
聚焦肝炎慢性化重症化 全国病毒性肝炎学术会议在郑举行
美学 | 考后真题答案首发(持续更新)
视点!岗位多,机会大!唐山最新招聘信息来了!
松饼的制作方法简单易学_松饼的制作方法
NBA前瞻:勇士常规赛“客场虫” 季后赛能否焕然一新?
2023年4月15日水处理消泡剂价格最新行情预测_环球观点
热点聚焦:为中国和世界消费市场把脉——第三届国际消费品博览会重要论坛聚焦
造富雪道 | “周杰伦”四度冲击港交所 巨星传奇IPO上市并非终点|全球要闻
study.ef.cn作业_study ef cn作业
每日视点!兔年上涨!4月13日酒水价格行情...…
x 广告
x 广告

Copyright ©  2015-2023 今日纤维网版权所有  备案号:沪ICP备2023005074号-40   联系邮箱:5 85 59 73 @qq.com