cdf海南免税官方商城是三亚国际免税城唯一官方网上商城。
于2016年2月1日正式上线运行。努力打造全球标志性旅游零售线上商城,服务海南离岛旅客免税购物。线上购买,机场、火车站、港口提货,方便快捷,一站式体验购物。
政策支持:
在海南省政府的统筹规划下,三亚国际免税城通过对免税政策体系的深度研究,持续探索“互联网+旅游+免税购物”这一新型业务模式,经过3年精心筹划,在电商平台建设方面,已完成商城系统全渠道研发,旅客可随时随地购买。
在商品准备方面,已基本涵盖线下所有免税品品类商品,将逐步覆盖线下300多个国际品牌;在增值服务方面,已形成712小时的全面高质量客户服务体系,为所有客户提供专业的售后服务。
“网上购物,机场/火车站/港口提货”,将进一步丰富和满足旅客离岛免税购物的选择与需求,旅客可以随时随地挑选货物下单,降低旅客购物的紧张度,为旅客带来更好的购物体验。革故鼎新,继往开来。
在现有“用户注册、全渠道选购下单、线上便利支付、机场快速提货”等常规业务功能基础上,将结合三亚国际免税城丰富的实体运营经验。
在新常态下开辟新思路,线上线下优势互补,逐步将c三亚国际免税城建设成为集购物、休闲、酒店、餐饮、娱乐为一体的智慧商城综合体,成为海南旅游的又一张金名片,成为海南离岛免税发展史上的又一座里程碑。
flume 有三大组件source 、channel和sink,各个组件之间都可以相互组合使用,各组件间耦合度低。使用灵活,方便。
1多sink
channel 的内容只输出一次,同一个event 如果sink1 输出,sink2 不输出;如果sink1 输出,sink1 不输出。 最终 sink1+sink2=channel 中的数据。
配置文件如下:
a1sources=r1a1sinks= k1 k2a1channels= c1# Describe/configure the sourcea1sourcesr1type= execa1sourcesr1shell= /bin/bash -ca1sourcesr1channels= c1a1sourcesr1command= tail -F /opt/apps/logs/tail4log# channela1channelsc1type= memorya1channelsc1capacity=1000a1channelsc1transactionCapacity=100#sink1a1sinksk1channel= c1a1sinksk1type= orgapacheflumesinkkafkaKafkaSinka1sinksk1kafkatopic= mytopica1sinksk1kafkabootstrapservers= localhost:9092a1sinksk1kafkaflumeBatchSize=20a1sinksk1kafkaproduceracks=1a1sinksk1kafkaproducerlingerms=1a1sinkskikafkaproducercompressiontype= snappy#sink2a1sinksk2type= file_rolla1sinksk2channel= c1#a1sinksk2sinkrollInterval=0a1sinksk2sinkdirectory= /opt/apps/tmp
2多 channel 多sink ,每个sink 输出内容一致
(memory channel 用于kafka操作,实时性高,file channel 用于 sink file 数据安全性高)
(多channel 单 sink 的情况没有举例,个人感觉用处不广泛。)
配置文件如下:
a1sources=r1a1sinks= k1 k2a1channels= c1 c2# Describe/configure the sourcea1sourcesr1type= execa1sourcesr1shell= /bin/bash -ca1sourcesr1channels= c1 c2a1sourcesr1command= tail -F /opt/apps/logs/tail4log#多个channel 的数据相同a1sourcesr1selectortype=replicating# channel1a1channelsc1type= memorya1channelsc1capacity=1000a1channelsc1transactionCapacity=100#channel2a1channelsc2type= filea1channelsc2checkpointDir= /opt/apps/flume-170/checkpointa1channelsc2dataDirs= /opt/apps/flume-170/data#sink1a1sinksk1channel= c1a1sinksk1type= orgapacheflumesinkkafkaKafkaSinka1sinksk1kafkatopic= mytopica1sinksk1kafkabootstrapservers= localhost:9092a1sinksk1kafkaflumeBatchSize=20a1sinksk1kafkaproduceracks=1a1sinksk1kafkaproducerlingerms=1a1sinkskikafkaproducercompressiontype= snappy#sink2a1sinksk2type= file_rolla1sinksk2channel= c2#a1sinksk2sinkrollInterval=0a1sinksk2sinkdirectory= /opt/apps/tmp
3 多source 单 channel 单 sink
多个source 可以读取多种信息放在一个channel 然后输出到同一个地方
配置文件如下:
a1sources=r1r2a1sinks= k1a1channels= c1# source1a1sourcesr1type= execa1sourcesr1shell= /bin/bash -ca1sourcesr1channels= c1a1sourcesr1command= tail -F /opt/apps/logs/tail4log# source2a1sourcesr2type= execa1sourcesr2shell= /bin/bash -ca1sourcesr2channels= c1a1sourcesr2command= tail -F /opt/apps/logs/tail2log# channel1 in memorya1channelsc1type= memorya1channelsc1capacity=1000a1channelsc1transactionCapacity=100#sink1a1sinksk1channel= c1a1sinksk1type= orgapacheflumesinkkafkaKafkaSinka1sinksk1kafkatopic= mytopica1sinksk1kafkabootstrapservers= localhost:9092a1sinksk1kafkaflumeBatchSize=20a1sinksk1kafkaproduceracks=1a1sinksk1kafkaproducerlingerms=1a1sinkskikafkaproducercompressiontype= snappy
flume 像乐高积木一样可以自己随心所欲将不同的组件进行搭配使用,耦合度低。
Source
rpc远程过程调用协议,客户机与服务机的调用模式需要对数据进行序列化。
1:客户机将参数序列化并以二进制形式通过网络传输到服务器。
2:服务器接收到后进行反序列化再调用方法获取返回值。
3:服务器将返回值序列化后再通过网络传输给客户机。
4:客户机接收到结果后再进行反序列化获取结果。
Avro source:
Avro就是一种序列化形式,avrosource监听一个端口只接收avro序列化后的数据,其他类型的不接收。
type:avrosource的类型,必须是avro。
bind:要监听的(本机的)主机名或者ip。此监听不是过滤发送方。一台电脑不是说只有一个IP。有多网卡的电脑,对应多个IP。
port:绑定的本地的端口。
Thrif source:
和avro一样是一种数据序列化形式,Thrifsource只采集thrift数据序列化后的数据
Exec source:
采集linux命令的返回结果传输给channel
type:source的类型:必须是exec。
command:要执行命令。
tail –f 若文件被删除即使重新创建同名文件也不会监听
tail -F 只要文件同名就可以继续监听
以上可以用在日志文件切割时的监听
JMS Source:
Java消息服务数据源,Java消息服务是一个与具体平台无关的API,这是支持jms规范的数据源采集;
Spooling Directory Source:通过文件夹里的新增的文件作为数据源的采集;
Kafka Source:从kafka服务中采集数据。
NetCat Source:绑定的端口(tcp、udp),将流经端口的每一个文本行数据作为Event输入
type:source的类型,必须是netcat。
bind:要监听的(本机的)主机名或者ip。此监听不是过滤发送方。一台电脑不是说只有一个IP。有多网卡的电脑,对应多个IP。
port:绑定的本地的端口。
HTTP Source:监听HTTP POST和 GET产生的数据的采集
Chanel
是一个数据存储池,中间通道,从source中接收数据再向sink目的地传输,如果sink写入失败会自动重写因此不会造成数据丢失。
Memory:用内存存储,但服务器宕机会丢失数据。
Typechannel的类型:必须为memory
capacity:channel中的最大event数目
transactionCapacity:channel中允许事务的最大event数目
File:使用文件存储数据不会丢失数据但会耗费io。
Typechannel的类型:必须为 file
checkpointDir :检查点的数据存储目录
dataDirs :数据的存储目录
transactionCapacity:channel中允许事务的最大event数目
SpillableMemory Channel:内存文件综合使用,先存入内存达到阀值后flush到文件中。
Typechannel的类型:必须为SPILLABLEMEMORY
memoryCapacity:内存的容量event数
overflowCapacity:数据存到文件的event阀值数
checkpointDir:检查点的数据存储目录
dataDirs:数据的存储目录
Jdbc:使用jdbc数据源来存储数据。
Kafka:使用kafka服务来存储数据。
Sink
各种类型的目的地,接收channel写入的数据并以指定的形式表现出来。Sink有很多种类型。
type:sink的类型 必须是hdfs。
hdfspath:hdfs的上传路径。
hdfsfilePrefix:hdfs文件的前缀。默认是:FlumeData
hdfsrollInterval:间隔多久产生新文件,默认是:30(秒) 0表示不以时间间隔为准。
hdfsrollSize:文件到达多大再产生一个新文件,默认是:1024(bytes)0表示不以文件大小为准。
hdfsrollCount:event达到多大再产生一个新文件,默认是:10(个)0表示不以event数目为准。
hdfsbatchSize:每次往hdfs里提交多少个event,默认为100
hdfsfileType:hdfs文件的格式主要包括:SequenceFile,DataStream ,CompressedStream,如果使用了CompressedStream就要设置压缩方式。
hdfscodeC:压缩方式:gzip,bzip2, lzo, lzop, snappy
注:%{host}可以使用header的key。以及%Y%m%d来表示时间,但关于时间的表示需要在header里有timestamp这个key。
Logger Sink将数据作为日志处理(根据flume中的设置的日志方式来显示)
要在控制台显示在运行agent的时候加入:-Dflumerootlogger=INFO,console。
type:sink的类型:必须是logger。
maxBytesToLog:打印body的最长的字节数 默认为16
Avro Sink:数据被转换成Avro Event,然后发送到指定的服务端口上。
type:sink的类型:必须是 avro。
hostname:指定发送数据的主机名或者ip
port:指定发送数据的端口
实例
1:监听一个文件的增加变化,采集数据并在控制台打印。
在这个例子中我使用exec source,memory chanel,logger sink。可以看我的agent结构图
以下是我创建的exec_sourceconf
a1sources=r1
a1channels=c1
a1sinks=k1
a1sourcesr1type=exec
a1sourcesr1command=tail -F/usr/local/successlog
a1channelsc1type=memory
a1channelsc1capacity=1000
a1channelsc1transactioncapacity=100
a1sinksk1type=logger
a1sourcesr1channels=c1
a1sinksk1channel=c1
执行命令:
bin/flume-ngagent --conf conf/ --conf-file conf/exec_sourceconf --name a1-Dflumerootlogger=INFO,console &
然后更改/usr/local/successlog文件中的内容后可以看到flume采集到了文件的变化并在控制台上打印出来。文件初始内容hello和how are you,剩下的i am fine和ok为新增加内容。
2:监控一个文件变化并将其发送到另一个服务器上然后打印
这个例子可以建立在上一个例子之上,但是需要对flume的结构做一些修改,我使用avro序列化数据再发送到指定的服务器上。详情看结构图。
实际上flume可以进行多个节点关联,本例中我只使用131向139发送数据
131,139上都必须启动agent
服务器131配置
以下是我创建的exec_source_avro_sinkconf
a1sources=r1
a1channels=c1
a1sinks=k1
a1sourcesr1type=exec
a1sourcesr1command=tail -F/usr/local/successlog
a1channelsc1type=memory
a1channelsc1capacity=1000
a1channelsc1transactioncapacity=100
a1sinksk1type=avro
a1sinksk1hostname=19216879139
a1sinksk1port=42424
a1sourcesr1channels=c1
a1sinksk1channel=c1
执行命令启动agent
bin/flume-ng agent --conf conf/ --conf-fileconf/exec_source_avro_sinkconf --name a1 -Dflumerootlogger=INFO,console&
139服务器配置
执行命令拷贝flume到139
scp -r apache-flume-170-bin/root@19216879139:/usr/local/
修改exec_source_avro_sinkconf
a1sources=r1
a1channels=c1
a1sinks=k1
a1sourcesr1type=avro
a1sourcesr1bind=0000
a1sourcesr1port=42424
a1channelsc1type=memory
a1channelsc1capacity=1000
a1channelsc1transactioncapacity=100
a1sinksk1type=logger
a1sourcesr1channels=c1
a1sinksk1channel=c1
执行命令启动agent
bin/flume-ng agent --conf conf/ --conf-fileconf/exec_source_avro_sinkconf --name a1 -Dflumerootlogger=INFO,console&
结果可以在139控制台上看到131中修改successlog的变化信息
3:avro-client实例
执行bin/flume-ng会提示有命令如下
help display this help text
agent run aFlume agent
avro-client run anavro Flume client
version show Flume version info
avro-clinet是avro客户端,可以把本地文件以avro序列化方式序列化后发送到指定的服务器端口。本例就是将131的一个文件一次性的发送到139中并打印。
Agent结构图如下
131启动的是一个avro-client,它会建立连接,发送数据,断开连接,它只是一个客户端。
启动一个avro客户端
bin/flume-ngavro-client --conf conf/ --host 19216879139 --port 42424 --filename/usr/local/successlog --headerFile /usr/local/kvlog
--headerFile是用来区分是哪个服务器发送的数据,kvlog中的内容会被发送到139,可以作为标识来使用。
139的avro_clientconf如下
a1sources=r1
a1channels=c1
a1sinks=k1
a1sourcesr1type=avro
a1sourcesr1bind=0000
a1sourcesr1port=42424
a1channelsc1type=memory
a1channelsc1capacity=1000
a1channelsc1transactioncapacity=100
a1sinksk1type=logger
a1sourcesr1channels=c1
a1sinksk1channel=c1
启动agent
bin/flume-ngagent --conf conf/ --conf-file conf/avro_clientconf --name a1-Dflumerootlogger=INFO,console &
139控制台显示如下
可以看到headers的内容headers:{hostname=19216879131}
注意:
1:Flume服务没有stop命令需要通过kill来杀掉进行,可以使用jps -m来确认是那个agent的number
[root@shb01 conf]# jps -m
3610 Jps -m
3512 Application --conf-fileconf/exec_sourceconf --name a1
2:修改flume的配置文件后如avro_clientconf,flume会自动重启
3:logger sink默认只显示16个字节
4:flume是以event为单位进行数据传输的,其中headers是一个map容器map
Event: { headers:{hostname=19216879131}body: 31 61 1a }
5:flume支持多节点关联但是sink和source的类型要一致,比如avro-client发送数据那么接收方的source也必须是avro否则会警告。
我会计专业硕士,考试方式为管理类联考,报考类别为非定向,报名点在选择学校后会给你提示,你也可以在陕西省报考点中选取接收报考的学校。(有些学校只接收社会考生)
定向与非定向是按照学生毕业后的去向来分得。定向生是原有工作单位,并且在读期间与原单位签订了定向协议,由原单位为其保留公职、工资、待遇和档案,毕业后必须回到原单位工作;非定向生是没有单位或与原单位完全脱离关系,档案带到学校,毕业后重新找工作
计划内的非定向生就叫做非定向生,也就是人们所说的公费生;计划内的定向生也就是我们所说的定向生(不交学费,同时还有单位接收);计划外的非定向生就是自筹生,即学费需要自己负担,没有单位;计划外的定向生就叫委培生,即由单位委托培养(其中重要的一点是单位为其负担学费)。
非定向就是主要是政府出钱,自筹的话自己花的钱要多。先报非定向,具体是哪一种是根据录取时候定的,排名前面录取的是非定向,后面录取的是自筹的。
欢迎分享,转载请注明来源:品搜搜测评网