flink-cdc解析:BaronND/connectors
flink-cdc解析
(资料图片仅供参考)
要想深入学习,先去哥的GitHub上去下载源码:https://github.com/BaronND/flink-cdc-connectors
起源背景
数据库的更改对于客户端来说是没有感知的,你需要开启线程去查询,才知道数据有没有更新,但是就算是查询,如果是直接select * from ....,这样获取的结果还要和上次获取的结果对比,才知道数据有没有发生变化,耗时大。要想实时监控mysql数据,要用到mysql binlog日志处理流程,binlog里保存了mysql的DDL和DML,而且是追加模式的,很适合流失数据的处理。我们知道每个taskmanager都有两个网关:输入和输出。他们之间通过netty进行通讯,有了一个buffer数据就可以下发。Source机制其实就是类似,是append模式,是一条一条的追加,不是批处理那样一次全部加载后交给下游,所以他能支持的数据源就不多,而mysql的binglog刚好合适这样的一个模式。
例如canal监听binlog把日志写入到kafka中。Apache Flink实时消费Kakfa的数据实现mysql数据的同步或其他内容等。整体的处理链路较长,需要用到的组件也比较多。虽然kafka是能够用来解耦了,但是也会造成磁盘资源和时间的消耗。Apache Flink CDC可以直接从数据库获取到binlog供下游进行业务计算分析。简单来说链路会变成这样。也就是说数据不再通过canal与kafka进行同步,而flink直接进行处理mysql的数据。节省了canal与kafka的过程。
Flink 1.11中实现了mysql-cdc与postgre-CDC,也就是说在Flink 1.11中我们可以直接通过Flink来直接消费mysql,postgresql的数据进行业务的处理。替代了之前的canal+kafka节点.直接通过sql的方式来实现对mysql数据的同步。
CDC介绍CDC简介
CDC(Change Data Capture)变更数据获取的简称,使用CDC我们可以从数据库中获取已提交的更改并将这些更改发送到下游,供下游使用。它是一个比较广义的概念,只要能捕获变更的数据,我们都可以称为 CDC 。业界主要有基于查询的 CDC 和基于日志的 CDC ,目前flink支持两种内置的connector,PostgreSQL和mysql。应用场景有如下。
1.使用flink sql进行数据同步,可以将数据从一个数据同步到其他的地方,比如mysql、elasticsearch等。
2.可以在源数据库上实时的物化一个聚合视图
3.因为只是增量同步,所以可以实时的低延迟的同步数据
4.维表join
解决方案
业务系统经常会遇到需要更新数据到多个存储的需求。例如:一个订单系统刚刚开始只需要写入数据库即可完成业务使用。某天 BI 团队期望对数据库做全文索引,于是我们同时要写多一份数据到 ES 中,改造后一段时间,又有需求需要写入到 Redis 缓存中。
很明显这种模式是不可持续发展的,这种双写到各个数据存储系统中可能导致不可维护和扩展,数据一致性问题等,需要引入分布式事务,成本和复杂度也随之增加。我们可以通过 CDC(Change Data Capture)工具进行解除耦合,同步到下游需要同步的存储系统。通过这种方式提高系统的稳健性,也方便后续的维护。
Mysql案例分析
为了设置MySQL CDC连接器,下表提供了使用构建自动化工具(例如Maven或SBT)和带有SQL JAR捆绑包的SQL Client的两个项目的依赖项信息。
1、Maven依赖
com.alibaba.ververica
flink-connector-mysql-cdc
1.1.0
2、SQL客户端JAR
下载flink-sql-connector-mysql-cdc-1.1.0.jar并将其放在下/lib/。
创建MySQL用户
必须定义一个对Debezium MySQL连接器监视的所有数据库具有适当权限的MySQL用户。
mysql> CREATE USER "user"@"localhost" IDENTIFIED BY "password";
2、向用户授予所需的权限
mysql> GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO "user" IDENTIFIED BY "password";
3、最终确定用户的权限
mysql> FLUSH PRIVILEGES;
源码解析
其实最主要的就是用MySQLSource类build一个DebeziumSourceFunction出来,也就是MysqlSource就是一个Builder,包括table模块中的MysqlTableSource也会调用MysqlSource来build一个DebeziumSourceFunction,所以今天的主角就是DebeziumSourceFunction。因为上一篇博客flink connector源码分析分析过sourcefunction,所以我们就直接看open和run的逻辑,就不细节讲open和run是如何以及何时调用的,总结上一篇博客来说就是先回调用open初始化sourcefunction一些属性,run就是把数据拉取过来然后emit出去。
1、步骤分析
DebeziumSourceFunction中的open:可以看到open这里就是创建一个线程池,非常简单。接下来看看run:这些属性当然是为了给debenium使用。在他的run方法里创建了一个DebeziumChangeConsumer,以及用properties和DebeziumChangeConsumer创建了DebeziumEngine,最后用线程池来执行DebeziumEngine,但是看看DebeziumChangeConsumer和DebeziumEngine两个类,就知道这个sourcefunction很简单。DebeziumChangeConsumer类的实现接口只有一个方法handleBatch,可以看到这个逻辑非常简单,就是先把debenium获取到的cdc数据先反序列化一波,直接emit到下游了,那问题来了,handleBatch中的参数数据是如何获取的呢,既然是debenium获取的,而且只有一个DebeziumEngine(这个是个runnable)。那咱们就先看看DebeziumEngine,因为DebeziumEngine是debezium的组件跟flink没关系,刚才咱们知道DebeziumEngine是个Runnable(其实也是个接口,默认实现为EmbeddedEngine)。既然是runnable那就主要看看他的run方法。DebeziumEngine的run方法里首先会创建一个task,然后启动他,明显是启动task去获取任务。接下启动任务之后就会在循环里面poll数据,说明task里面肯定有一个组赛队列,接着handler会处理获取的数据,还记得刚才咱们说的DebeziumChangeConsumer吗,他就是咱们的handler呀,正好刚才咱们还愁着handleBatch中的参数从哪里来,现在看到了吧,就是从这里来。现在咱们知道原来数据是从task的阻塞队列里面的,那么,task启动之后肯定是把数据方法阻塞队列中了,基于这样的猜想咱们来看看task。这里咱们主要看看task的start做了啥task.start里第一个start不用看,第二个start是MySqlConnectorTask实现的,看类名明显知道这是处理mysql的,其实在start里面会创建好多Reader(BinlogReader用于增量获取,SnapshotReader用于第一次全量拉取),然后放到ChainedReader中。
2、核心逻辑总结
MySqlConnectorTask的ChainedReader包含多个Reader,这些reader就是用来获取全量数据和增量数据,这些数据会放进抽象类AbstractReader中的BlockingQueue中在Debezium的run方法中会从task中poll数据task会从Reader中的blockingQueue拿数据数据拿到之后会交给DebezinumConsumer,DebezinumConsumer会先反序列化数据,然后emit给下游MySQL CDC表的创建
1、Sql的方式:
-- register a MySQL table "orders" in Flink SQLCREATE TABLE orders ( order_id INT, order_date TIMESTAMP(0), customer_name STRING, price DECIMAL(10, 5), product_id INT, order_status BOOLEAN) WITH ( "connector" = "mysql-cdc", "hostname" = "localhost", "port" = "3306", "username" = "root", "password" = "123456", "database-name" = "mydb", "table-name" = "orders");-- read snapshot and binlogs from orders tableSELECT * FROM orders;
2、Stream API:
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;import org.apache.flink.streaming.api.functions.source.SourceFunction;import com.alibaba.ververica.cdc.debezium.StringDebeziumDeserializationSchema;import com.alibaba.ververica.cdc.connectors.mysql.MySQLSource;public class MySqlBinlogSourceExample { public static void main(String[] args) throws Exception { SourceFunctionsourceFunction = MySQLSource.builder() .hostname("localhost") .port(3306) .databaseList("inventory") // monitor all tables under inventory database .username("flinkuser") .password("flinkpw") .deserializer(new StringDebeziumDeserializationSchema()) // SourceRecord to String .build();StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.addSource(sourceFunction) .print().setParallelism(1); env.execute(); }}
特征和常见问题
1.特征:
1、Exactly-Once Processing 一次处理 MySQL CDC连接器是Flink Source连接器,它将首先读取数据库快照,然后即使发生故障,也将以完全一次的处理继续读取二进制日志。请阅读连接器如何执行数据库快照。
2、Single Thread Reading 单线程阅读 MySQL CDC源无法并行读取,因为只有一个任务可以接收Binlog事件。
2.常见问题:
1、如何跳过快照并仅从binlog中读取?可以通过选项进行控制debezium.snapshot.mode,您可以将其设置为:
never:指定连接永远不要使用快照,并且在第一次使用逻辑服务器名称启动时,连接器应该从binlog的开头读取;请谨慎使用,因为只有在binlog保证包含数据库的整个历史记录时才有效。
schema_only:如果自连接器启动以来不需要数据的连续快照,而只需要它们进行更改,则可以使用该schema_only选项,其中连接器仅对模式(而不是数据)进行快照。
2、如何读取包含多个表(例如user_00,user_01,...,user99)的共享数据库?该table-name选项支持正则表达式以监视多个与正则表达式匹配的表。因此,您可以设置table-name为user.*监视所有user_前缀表。database-name选项相同。请注意,共享表应该在相同的架构中。
3、ConnectException:收到用于处理的DML"...",binlog可能包含使用语句或基于混合的复制格式生成的事件 如果有上述异常,请检查是否binlog_format为ROW,您可以通过show variables like "%binlog_format%"在MySQL客户端中运行来进行检查。请注意,即使binlog_format您的数据库配置为ROW,也可以通过其他会话更改此配置,例如SET SESSION binlog_format="MIXED"; SET SESSION tx_isolation="REPEATABLE-READ"; COMMIT;。还请确保没有其他会话正在更改此配置
代码demo
package com.flink.java.cdc.mysql;import com.alibaba.ververica.cdc.connectors.mysql.MySQLSource;import com.alibaba.ververica.cdc.debezium.StringDebeziumDeserializationSchema;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;import org.apache.flink.streaming.api.functions.source.SourceFunction;public class MySqlBinlogDemo { public static void main(String[] args) { SourceFunctionsourceFunction = MySQLSource.builder() .hostname("192.168.100.1") .port(3306) // 监视库存数据库下的所有表// .databaseList("test") .tableList("test.user_test") .username("root") .password("123456") // 将SourceRecord转换为String .deserializer(new StringDebeziumDeserializationSchema()) .build(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();// StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(new Configuration()); // 对接收器使用并行性1以保持消息顺序 env.addSource(sourceFunction).print().setParallelism(1); try { env.execute(); } catch (Exception e) { e.printStackTrace(); } }}
2.mysql
package com.flink.java.cdc.mysql;import com.alibaba.ververica.cdc.connectors.mysql.MySQLSource;import org.apache.flink.connector.jdbc.JdbcOutputFormat;import org.apache.flink.connector.jdbc.internal.GenericJdbcSinkFunction;import org.apache.flink.streaming.api.datastream.DataStreamSource;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;import org.apache.flink.streaming.api.functions.sink.SinkFunction;import org.apache.flink.streaming.api.functions.source.SourceFunction;import org.apache.flink.types.Row;import java.sql.Types;public class Mysql2Mysql { public static void main(String[] args) { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1); SourceFunctionsourceFunction = MySQLSource.builder() .hostname("192.168.100.1") .port(3306) .tableList("test.user_test2") .username("root") .password("123456") // 将SourceRecord转换为Row .deserializer(new DebeziumDeserialization()) .build(); DataStreamSourcestreamSource = env.addSource(sourceFunction);// String query = "INSERT INTO test.user_test(id,name) VALUES (?,?) on duplicate key update id=VALUES(id);"; String query = "INSERT INTO test.user_test(id,name) VALUES (?,?) on duplicate key update id=VALUES(id);"; JdbcOutputFormat jdbcOutputFormat = JdbcOutputFormat.buildJdbcOutputFormat() .setDrivername("com.mysql.cj.jdbc.Driver") .setDBUrl("jdbc:mysql://192.168.100.1:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false") .setUsername("root") .setPassword("123456") .setQuery(query) .setSqlTypes(new int[]{Types.VARCHAR, Types.VARCHAR}) .setBatchSize(1) .finish(); streamSource.print(); SinkFunctionjdbcSinkFunction = new GenericJdbcSinkFunction<>(jdbcOutputFormat); streamSource.addSink(jdbcSinkFunction); try { env.execute(); } catch (Exception e) { e.printStackTrace(); } }}
package com.flink.java.cdc.mysql;import com.alibaba.ververica.cdc.debezium.DebeziumDeserializationSchema;import org.apache.flink.api.common.typeinfo.BasicTypeInfo;import org.apache.flink.api.common.typeinfo.TypeInformation;import org.apache.flink.types.Row;import org.apache.flink.util.Collector;import org.apache.kafka.connect.data.Schema;import org.apache.kafka.connect.data.Struct;import org.apache.kafka.connect.header.Headers;import org.apache.kafka.connect.source.SourceRecord;import java.util.Map;public class DebeziumDeserialization implements DebeziumDeserializationSchema{ private static final long serialVersionUID = -3168848963265670603L; @Override public void deserialize(SourceRecord record, Collectorout) throws Exception { //SourceRecord MapsourcePartition = record.sourcePartition(); MapsourceOffset = record.sourceOffset(); //ConnectRecord Object value = record.value(); Row row = new Row(2); Struct struct = (Struct) value; struct = struct.getStruct("after"); //id,name String id = struct.getString("id"); String name = struct.getString("name"); row.setField(0, id); row.setField(1, name); out.collect(row); } @Override public TypeInformationgetProducedType() { return BasicTypeInfo.of(Row.class); }}
需要额外加入的依赖
mysqlmysql-connector-java8.0.22 org.apache.flinkflink-avro-confluent-registry1.11.1com.alibaba.ververicaflink-connector-mysql-cdc1.1.0
标签:
相关推荐:
精彩放送:
- []环球今热点:惠普笔记本电脑 设备管理器中双击未知设备的解决方案
- []世界通讯!河北:春节期间零售餐饮收入同比增9.61% 市场回暖态势明显
- []【盗梦空间】潜行凶间(港)全面启动
- []美联:二手公屋注册量相隔16个月后再次突破100宗水平
- []Docker基于镜像 可以秒级启动各种容器
- []消息!德迈仕:截至2023年1月20日公司在册股东人数约为1.46万人
- []hcie培训价格多少钱?线上培训和线下面授的区别在哪里?
- []世界微头条丨androidstudio发现环境坏了 jdk出问题了?
- []PocketTrail实现拖尾效果的脚本及说明
- []identity字段怎么使用?identity字段的基本用法及使用方法
- []长安期货原油早评:节后国际油价高开走强,多头力量回暖或打开上方空间
- []世界最资讯丨沃特股份:公司近期全力组织人员推进重庆基地受疫情影响的生产和建设进度
- []世界资讯:万祥科技:截止至2023年1月20日,公司股东数量为13,426户
- []【世界新视野】张少华去世后第二天 新凤霞儿子吴欢发声:是非曲直已公断
- []中国节气小暑是什么意思?小暑节气的含义是哪些意思?
- []西双版纳离景洪机场多远?从机场到景洪要多久?
- []头条:《三生三世,十里桃花》:女主是狐狸的小说男主姓陆
- []天天热头条丨赵文卓为什么从功夫巨星到无戏可拍?他到底得罪谁了?
- []全球快资讯丨2018年全球最富有的女性超模:吉赛尔邦辰排名第一
- []每日时讯!袱组词有哪些?袱组词大全
- []天天实时:什么是空头?股市中空头详情介绍
- []环球观天下!十一年原唱邱永传的歌词 你知道吗?
- []怎么彻底删除电脑浏览器历史记录?怎样删除电脑浏览历史记录?
- []专访张家界常务副总裁、董秘金鑫:春节旅游爆火,景区导游紧缺,行业的春天来了吗?
- []环球快资讯:Ddnf:搬砖神器“寻龙诀”突然崩盘 1700万跌到700万
- []手摇甘蔗榨汁机怎么样?品牌有哪些?
- []邓佳坤是谁?关于邓佳坤的介绍
- []【全球新要闻】联想昭阳E46G能玩魔兽世界吗?显卡集显特效开起来根本没办法玩
- []当前滚动:领酱国酒你了解多少?关于领酱国酒的介绍
- []全球观焦点:iphone4s怎么设置彩信?iphone4s联通卡彩信设置方法
- []河北地方戏隆尧秧歌 河北风俗之小吃来解答
- []chess是什么意思?chess的用法有哪些?
- []每日动态!QQ火炬手图标怎么关闭?QQ火炬手图标关闭方法
- []佳能IP1180怎么样?佳能IP1180详情介绍
- []【世界快播报】如何搭建高德离线地图服务?bigemap搭建离线地图二次开发示例
- []希腊字母念法是什么?数学常用希腊字母念法
- []HBO公布《权力的游戏》第七季主演人选 布劳德本特即将加盟
- []电信积分怎么兑换话费?电信积分兑换话费教程
- []每日动态!古代建筑物有哪些特点?关于古代建筑物的介绍
- []世界今头条!绿色出行新方式:共享汽车APP的交互体验
- []天天观焦点:小米8解BL锁教程 怎么申请BootLoader解锁?
- []焦点观察:华军软件园下载教程:下载中心
- []JAVA办公管理系统(OA) 开源的java项目框架
- []天天观点:弈天棋缘客户端 v1.43怎么下载?下载步骤流程
- []白酒抢占春节“C位” 业绩普遍报喜!茅台仍是最爱 机构看好消费强劲复苏
- []富可视m310怎么刷机?富可视m310刷机教程
- []即时看!网银无法登陆怎么办?网银无法登陆的解决办法
- []全球热议:lol提莫操作教学 lol提莫怎么玩?
- []天天热推荐:兔年A股启程!成长股能否接力蓝筹白马?外资已抢跑 影响如何?机构这样看
- []【天天报资讯】马斯洛需求层次理论 你处于哪个阶段?
- []全球微头条丨淘宝拥有注册会员1.7亿 注册用户不断增长
- []今日热搜:无惧长假因素 逾40亿资金加码布局这只ETF
- []2020年军工股票一览表 收藏备用
- []动画显示Ammeter支持将电量、油量以动画形式展示(一)
- []简讯:小米3全网通版再刷安卓原生系统:苹果iPhone5国行版
- []rocketdock怎么操作?rocketdock教程之程序设置
- []当前热讯:希腊神话中最美丽的女人——木马屠城记-海伦特洛伊
- []联想s720i配置怎么样?联想s720i配置总结
- []华为t2010怎么刷机?华为t2010刷机教程及评测
- []【世界报资讯】光大证券:消费医药是A股核心方向 港股或有更强的指数表现
- []天天日报丨年产量3000万枚电芯!宁德时代德国工厂投产开启全球“抢单”
- []环球热资讯!手机wifi密码破解器哪个好用?手机wifi密码破解器推荐
- []前沿热点:o哒取代基效应:分子中的电子效应
- []头条:无法访问文件夹怎么办?无法访问文件夹的原因和解决方法
- []windows7桌面图标怎么改大小?修改方法步骤
- []天天速读:步进电机概念、原理
- []快看点丨手机无限重启或无法开机怎么办?索爱st25i强刷教程及注意事项
- []linux主机的详细介绍 linux主机安装的八个步骤
- []每日快报!功放如何连接?功放机接线图
- []快看:什么软件修图较好?图片处理有哪些技巧?
- []戴森v7v8v10什么区别?V6和V8的区别在哪里?
- []全球快资讯:又是郑州!春节后率先松绑楼市,今起首套房利率下调至3.8%
- []什么是浏览器缓存?如何在所有主要浏览器中清除浏览器缓存?
- []冒险岛维护时间延长 升级至V161“黑魔法师”版本
- []天天视讯!环境映射是反射吗?mental ray渲染引擎----环境映射
- []数据库管理系统(DBMS)——数据库原理及其应用
- []世界热头条丨开年多地住房消费重启信号强烈 专家:需求端政策力度有望进一步加强
- []1月30日生意社氯化石蜡基准价为5333.33元/吨
- []微信聊天记录导出成纯文本文件 用安卓模拟器破解了
- []每日看点!morphologyEx函数实现黑帽操作
- []wpcap.dll文件无法加载?wpcap.dll/Packet.dll/pthreadVC.dll丢失解决办法
- []世界要闻:又有外资大行发声!看好中国股市 建议超配亚洲资产
- []每日头条!Mac电脑中delete键的几种用法?delete键功能介绍
- []今日热闻!万科企业获摩根大通增持497.22万股 持股比例升至6.25%
- []全年营收不到10万!这家上市公司跨界新能源汽车损失惨重,提示终止上市风险
- []全球热点评!福建莆田未来新城5幅国有建设地块被收回 涉土地面积共计约51.5亩
- []【环球新要闻】共创草坪:截至2023年1月20日,公司的股东总户数为11,397户
- []世界时讯:明星电力:公司若涉及重组整合等经营发展重大事项,将严格按照相关规定及时履行信息披露义务
- []上海奉贤新城11.5亿元中票将于2月4日付息 利率4.00%
- []世界速递!重庆钢铁:在全球经济下行风险增大的宏观环境下,目前矿价120-130吨/美金,估值偏高
- []最新公募基金十大重仓股现身 哪些行业受宠?
- []春节租车火爆,豪车日租3000元被抢光
- []【焦点热闻】春节旅游的烟火气回来了,一些不和谐因素也出现了
- []荆州城投5亿元中期票据拟付息 利率4.78%
- []绿城管理2022年度新拓代建项目合约总建筑面积达2823万平方米
- []上海与中国五矿签署战略合作协议 涉及产城融合与城市更新改造等领域
- []环球今日讯!车险网上买保险和线下买保险的区别
- []每日时讯!政经谭 | 上海加大保障性租赁住房建设筹措力度 杭州固化房屋征收补偿政策
- []商业健康保险归属于什么险
- []视焦点讯!换货运费险什么时候到账
- ssh/authorized_keys软件安装教程
- 环球速看:页面自动跳转怎么操作?javascript实现网页自动跳转的5种方法
- 世界最新:房源突然下架,中海北京和渠道“掰手腕”,发生了什么?
- SVN系列教程-第四章-TortoiseSVN使用大全
- 全球热消息:天域生态:公司及下属控股子公司并没有锂电池的生产业务
- flink-cdc解析:BaronND/connectors
- 【世界播资讯】国外开发API,api地址、Authentication认证
- 最新:【证书】PFX证书、CER证书申请流程详解
- 【世界热闻】郑州打响新年“降利率降首付”第一枪 首套房贷利率降至3.8%
- 滚动:“黑马”上位,这个西南省份终于等到了
- 【快播报】平安车险的不计免赔在哪里看
- 世界观点:航意险是什么意思必须购买吗
- 世界报道:飞亚达(000026)343.67万股限售股将于1月31日解禁上市,占总股本0.82%
- 热头条丨上海徐汇:今年城市更新攻坚战目标任务超400个项目
- 世界观热点:温州:上半年继续实行个人首次购房补贴 给予购房款0.6%消费补助
- 恒烁股份2022年预计净利2000万-2400万同比减少84%-86% 产品整体销量显著下滑
- 不到半个月! 两款国产新冠口服药获批上市,涉两家上市公司,定价和药效如何?
- 环球今热点:万润新能2022年预计净利11.3亿-12.4亿增长220.48%-251.68% 产品销售规模增长
- 天天热推荐:百城新房库存同比连涨49个月,这两城去化周期超过80个月 专家:一二线楼市有望率先复苏
- 索菲亚预计2022年净利9.5-11亿元 同比增675%-797%
- 当前视点!郑州首套房贷利率即日起降至3.8%,分析称此次下调符合预期
- 世界视点!南京2022年GDP为16907.85亿元 比上年增长2.1%
- 天天看点:福州新区:长乐直管区人才房源符合条件可7折出售
- 每日时讯!家居丨莱克电气:2022年预计实现归母净利润9.50亿元至10.50亿元
- 深圳福田南华村棚改规划公示 两宗子地块将提供2763套住宅
- 全球报道:菲仕兰190吨产品不合格未准入境,陈戈的双位数增长目标存疑
- “恩仕有机米粉”抽检不合格被通报 产品生产商为“老赖”
- 焦点热讯:金华住房公积金管理中心“三聚焦”大力支持住房消费
- 全球热文:快讯丨北京链家不再为中海项目带客?中介回应“公司不让去”
- 强信心·抓落实|强基础保供给 新疆做好新一年经济稳增长举措
- 全球观察:家居丨惠而浦:聘任孙亚萍为董事会秘书
- 彭博行业研究2023年值得关注的公司:迪士尼、新加坡航空上榜
- 光大嘉宝:完成21光大嘉宝PPN001全部回售及本息兑付事项
- 快播:北京通州区与北三县一体化高质量发展将落实五方面重点任务
- 环球即时:央行北京营管部:2022年12月末人民币住户贷款余额同比增长8.2%
- 合力泰:公司作为比亚迪的上游供货商,销售订单占总体营收比例较小
- 浦东金桥联合体被确定为上海虹口区两宗旧改地块最终实施主体
- 【天天播资讯】安洁科技:公司主要为VR.XR.MR提供相关精密功能件和精密结构件,暂时没有涉及整机组装业务
- 【焦点热闻】国旅联合:预2022年归母净利润至多1050万元 同比减少最多达72%
- 免税第二春
- 轻氧专注打磨研发内核,不断引领产品更迭创新
- 【播资讯】A股牛市呼之欲出?私募人士喊话:尽快切换到牛市思维
- 观焦点:广东:2022年房地产开发投资1.50万亿元 同比下降14.3%
- 光大嘉宝10亿元定向融资完成全部回售及本息兑付
- 全球速看:大金重工:公司截至2023年1月20日股东户数是56,187户
- 焦点速递!央行:北京2022年12月末本外币存贷均有增加
- 环球热文:隆平高科:请参考公司发布的定期报告
- 大连友谊拟向阜新银行申请3000万元授信额度
- 每日快播:领跑大盘!海尔专卖店:零售实现高质量两位数逆增
- 央行北京营管部:2022年12月末人民币住户存款同比增20.6%
- 当前关注:雪人股份:截止2023年1月10日,公司股东总户数为123,637人
- 360借条是正规的吗 360打哪个电话可以协商还款?
- 股指交割日是什么意思 为什么股指会在交割日下跌?
- 冻结薪资是什么意思 工资卡在什么情况下会被冻结?
- 花呗红包用了要还吗怎么还 不开通花呗收钱能收花呗的钱吗?
- 如何强制开通微粒贷 微粒贷有额度怎么强制借出去?
- 身份证到期可在现居住地换领身份证吗 换领身份证需要两寸照片吗?
- 公司名下的车可以做抵押贷款吗 公司车辆抵押贷款有哪些条件?
- 热点聚焦:杭州固化房屋征收补偿政策:非高层安置高层加10%安置面积
- 第三方支付平台是什么 第三方支付的功能有哪些类型?
- 世界滚动:粤海佛山禅城季华项目正式动工 总投资约24亿元
- 险资举牌意味着什么 被险资举牌的股票第二天会大涨吗?
- 上饶信州区滨江东路66号酒店部分房产已流拍 起拍价2.01亿元
- 山东盛世中天地产“海豚大厦”项目工程已流拍 起拍价1.08亿元
- 什么叫黄金做空 黄金下跌为什么还可以赚钱?
- 发改委:推动北京市通州区与河北三县产业发展协同协作
- 停牌的股票可以卖吗 停牌的股票一般多久复牌?
- 深新股额1000是什么意思 新股中签1000股怎么操作?
- 如何取消手机银行业务 开通电话银行安全吗可靠吗?
- 总投资收益率多少合适 股票收益率如何计算?
- 伞形配资指什么 配资需要什么条件?
- 基金转换怎么收费 基金转换和赎回哪个好一点?
- 深圳市交通运输局:加快建设全球领先的低空经济中心丨深圳市高质量发展大会
- 注册制全面实施意味着什么 注册制允许散户炒股么?
- 什么是贸易顺差逆差 贸易顺差是出口金额大于进口金额吗?
- atm机一天最多转账多少钱 自动取款机可以取10万吗?
- 贵金属开户要多少钱 贵金属在哪里开户比较好?
- 环球新消息丨北京控股2023-2025年度债券总注册金额为200亿元
- 天天热文:杭州萧山钱江世纪城拟发行5.5亿元中票 用于偿还此前债务本息
- 头条:比亚迪:新年好投资人!谁掌握了先进的电池技术,谁就掌握了电动汽车的未来
- 上海:今年以来已签约重点产业项目160余个 总投资1000亿元
- 焦点!深圳2023年首批重大项目开工 涉及房地产领域项目30个
- 视讯!赣州城投20亿元中期票据将于2月3日付息 利率4.4%
- 全球观天下!绿城服务联手新远文化集团成立浙江之江物业 注册资本1000万元
- 今亮点!深圳龙岗保利静安府拟规划1050户 其中保障房130户
- 达志科技:公司已经发布春节放假通知,生产序列员工按照部门排班要求进行放假,感谢您对公司关注
- 环球动态:入华38年,雅高的在华朋友圈究竟有多大?
- 热门旅游地区民航市场率先恢复,北京至三亚、成都票价走高
- 环球快讯:民宿预定涨10倍,又贵又挤的春节回来了
- 全球微动态丨青岛钓鱼台和美高梅两大超五星级酒店预计年中同步开业
- 佛山禅城:2022年开展保租房项目6个 合计提供房源3410套
- 北京2022年全市第三批保障房建设计划涉及8个项目共计8083套房源
- 每日简讯:湖南长沙340个重大项目集中开工 计划总投资1951亿元
- 全球热头条丨保利物业中标中煤华利下属公司后勤综合外委服务项目 金额470万元
- 快看点丨西部材料:如有相关情况在符合相关规定的前提下,公司会及时履行信息披露义务
- 【BT金融分析师】迪士尼股票同比下跌25%,分析师称乐园和产品将迎爆发式复苏
- 每日焦点!科创板交易规则是什么?科创板交易规则汇总?
- 世界热讯:沙漠骆驼歌词什么意思?沙漠骆驼是谁唱的?
- 春节民宿房价动辄上涨数十倍,“报复性消费”来了?
- 漫游的近义词有哪些?漫游的反义词有哪些?
- 每日信息:合家与阖家有什么区别?合家与阖家怎么使用?
- 实时焦点:东南半壁的地区是哪里?东南半壁资料介绍
- 纳赤台是什么地方?纳赤台资料介绍?
- 这个春节,云南西双版纳被挤爆了
- 居贵州省首位!贵阳青岩古镇春节假期接待游客26.5万
- 古董局中局道士扮演者是谁?古董局中局道士扮演者资料介绍
- 环球简讯:夏天怎么样穿搭最时尚?夏季时尚穿搭有哪些推荐?
- 菲律宾的主要城市有哪些?菲律宾的主要城市资料介绍?
- 天天通讯!途家民宿副总裁胡阳:2022年,途家打了一场“民宿突围战”
- 今日播报!什么什么目的成语有哪些?分享几个带目字的成语?