当前位置: 首页 > news >正文

西安营销型网站建设什么是电子商务网站建设的基本要求

西安营销型网站建设,什么是电子商务网站建设的基本要求,私人信息调查,网站运营与管理1. canal简介 canal是阿里开源的数据同步工具#xff0c;基于bin log可以将数据库同步到其他各类数据库中#xff0c;目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等 canal分成服务端deployer和客户端adapter#xff0c;我们可以部署多个#xff0c;同时为了方便管…1. canal简介 canal是阿里开源的数据同步工具基于bin log可以将数据库同步到其他各类数据库中目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等 canal分成服务端deployer和客户端adapter我们可以部署多个同时为了方便管理还提供了一个管理端admin canal的数据同步流程如下图所示 因为目前canal还不能直接通过配置就实现对redis的数据同步因此我们需要自定义一下canal客户端通过服务端将数据同步到客户端后由客户端自定义操作同步到redis 2、canal配置MySQL数据库用的是204服务器上的canal安装在208服务器上 第一步因为canal是监控MySQL中的binlog日志来完成同步工作所以我们需要开启binlog日志功能由于咱们项目用的MySQL8以上的版本binlog默认开启所以可以不管。 第二步通过show variables like ‘%binlog_format%’; 查看当前binlog值为ROW就可以了 第三步源数据库创建一个canal账号并且设置slave,dump权限 CREATE USER canal IDENTIFIED BY canal; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO canal%; -- GRANT ALL PRIVILEGES ON *.* TO canal% ; FLUSH PRIVILEGES; 第四步因为mysql8.0.3后身份检验方式为caching_sha2_password但canal使用的是mysql_native_password因此需要设置检验方式如果该版本之前的可跳过否则会报错IOException: caching_sha2_password Auth failed ALTER USER canal% IDENTIFIED WITH mysql_native_password BY canal; select host,user,plugin from mysql.user ;第五步在208服务器上拉取canal输入以下命令并解压到/tmp/canal文件夹下 wget https://github.com/alibaba/canal/releases/download/canal-1.1.6/canal.deployer-1.1.6.tar.gz进入到canal文件夹然后进入conf文件夹找到example文件夹复制example文件夹并重命名为redis cd conf # 复制example实例配置 cp -R example redis然后修改redis文件夹中的instance.properties配置文件 在此之前需要查看一下数据库binlog日志状态信息 show master status;然后进行instance.properties配置文件开始配置说明和需要改动的地方都在图里 想了解配置中其他配置信息的可以参考下面的 配置完成后启动canal客户端并查看日志没报错就说明成功了 ./bin/start.sh cat logs/redis/redis.log我在过程中也遇到了错误如遇到可以看看下面的解决办法 Received error packet: errno 1236, sqlstate HY000 errmsg Could not find first log file name in binary log index file 第六步创建canal应用端配置需要同步到redis的地址展示本地应用具体的应用这几天会上传到云效上 依赖引用 dependencygroupIdtop.javatool/groupIdartifactIdcanal-spring-boot-starter/artifactIdversion1.2.1-RELEASE/version /dependency配置文件application.yml # 应用名称 spring:application:name: ns-service-support-canal# 数据同步到当前redis中redis:host: 127.0.0.1password: 123456database: 6# 应用服务 WEB 访问端口 server:port: 8080# canal服务端地址 canal:# 部署到208上port默认为11111server: 192.168.xxx.xxx:11111# 实例名与之前复制example之后那个文件夹名称一致destination: redis# 设置canal消息日志打印级别 logging:level:top.javatool.canal.client: warnRedisConfig.java(json转换与其他微服务同步) Configuration AllArgsConstructor public class RedisConfig {private RedisConnectionFactory factory;/*** jsonObject转换* param connectionFactory* return*/BeanSuppressWarnings(value { unchecked, rawtypes })public RedisTemplateObject, Object redisTemplate(RedisConnectionFactory connectionFactory){RedisTemplateObject, Object template new RedisTemplate();template.setConnectionFactory(connectionFactory);FastJsonRedisSerializer serializer new FastJsonRedisSerializer(Object.class);// 使用StringRedisSerializer来序列化和反序列化redis的key值template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(serializer);// Hash的key也采用StringRedisSerializer的序列化方式template.setHashKeySerializer(new StringRedisSerializer());template.setHashValueSerializer(serializer);template.afterPropertiesSet();return template;}}3、关键如果选择直接使用当前项目你需要在项目中增加实体类和handler两个 关键的来了需要同步哪张表就需要创建对应的实体类与其他微服务基本一致需要添加的东西是实体类头部增加Table注解标明对应的数据库表名每个实体类参数添加Column注解名称对应数据库表参数以user表为例 Data Table(name user) public class User implements Serializable {private static final long serialVersionUID 1L;ApiModelProperty(id)NsGridField(title id)Column(nameid)private Long userId;ApiModelProperty(姓名)NsGridField(title 姓名)Column(namename)private String name;ApiModelProperty(账号)NsGridField(title 账号)Column(nameusername)private String username;ApiModelProperty(密码)NsGridField(title 密码)Column(namepassword)private String password;ApiModelProperty(昵称)NsGridField(title 昵称)Column(namenickname)private String nickname;ApiModelProperty(授权顾问昵称)NsGridField(title 授权顾问昵称)Column(nameg_a_a_c_nickname)private String gAACNickname;ApiModelProperty(头像地址)NsGridField(title 头像地址)Column(nameavatar_url)private String avatarUrl;ApiModelProperty(手机)NsGridField(title 手机)Column(namephone)private String phone;ApiModelProperty(身份证号)NsGridField(title 身份证号)Column(nameid_card)private String idCard;ApiModelProperty(邮箱)NsGridField(title 邮箱)Column(nameemail)private String email;ApiModelProperty(性别: 0男;1女;2未知)NsGridField(title 性别: 0男;1女;2未知)Column(namegender)private Integer gender;ApiModelProperty(账号状态0正常;1禁用)NsGridField(title 账号状态0正常;1禁用)Column(nameaccount_status)private Integer accountStatus;ApiModelProperty(账号类型0普通用户 1平台用户 )NsGridField(title 账号类型0普通用户 1平台用户 )Column(nameaccount_type)private Integer accountType;ApiModelProperty(是否实名认证0否 1是)NsGridField(title 是否实名认证0否 1是)Column(nameis_approve)private Integer isApprove;ApiModelProperty(平台组织id)NsGridField(title 平台组织id)Column(nameorg_id)private Long orgId;ApiModelProperty(备注)NsGridField(title 备注)Column(nameremark)private String remark;ApiModelProperty(乐观锁)NsGridField(title 乐观锁)Column(namerevision)private Integer revision;ApiModelProperty(排序)NsGridField(title 排序)Column(namesort_value)private Integer sortValue;ApiModelProperty(状态)NsGridField(title 状态)Column(namestatus)private Boolean status;ApiModelProperty(组织描述)NsGridField(title 组织描述)Column(nameorg_describe)private String orgDescribe;Overridepublic String toString() {return User{ name name \ , username username \ , password password \ , nickname nickname \ , gAACNickname gAACNickname \ , avatarUrl avatarUrl \ , phone phone \ , idCard idCard \ , email email \ , gender gender , accountStatus accountStatus , accountType accountType , isApprove isApprove , orgId orgId , remark remark \ , revision revision , sortValue sortValue , status status , orgDescribe orgDescribe \ };} }canal-spring-boot-starter包提供了EntryHandler类用于监控表数据更新于是我们创建一个EntryHandler实现类用于实现redis的增删改 /*** author csf* Description* date 2023/1/30*/ CanalTable(user) Component AllArgsConstructor Slf4j public class NmsUserHandler implements EntryHandlerUser {private final RedisTemplateObject,Object redisTemplate;Overridepublic void insert(User nmsUser) {log.info([新增]nmsUser.toString());redisTemplate.opsForValue().set(user:nmsUser.getUsername(),nmsUser);Object o redisTemplate.opsForValue().get(user:ns0);System.out.println(o);}Overridepublic void update(User before, User after) {log.info([更新]after.toString());redisTemplate.opsForValue().set(user:after.getUsername(),after);Object o redisTemplate.opsForValue().get(user:snn7);System.out.println(o);}Overridepublic void delete(User nmsUser) {log.info([删除]nmsUser.getUsername());redisTemplate.delete(user:nmsUser.getUsername());} } 至此配置完成启动项目 测试不管对数据进行增或删改日志都能实时反馈并且数据都能实时同步到redis中 日志 redis
http://www.dnsts.com.cn/news/217816.html

相关文章:

  • 网站被百度删除的原因购买了网站如何使用吗
  • 建设网站去哪里备案北京网站开发哪里好薇
  • 做网站有什么注意事项php网站开发培训
  • 如何布局网站建材招商网
  • 怎样做生成的二维码链接到网站织梦网站地图底部
  • 成都企业网站模板建设网站制作公司如何运作
  • 服务网站备案麻栗坡网站建设
  • 建设公司网站法律声明彩票网站怎么做赚钱吗
  • 做网站克隆建筑工程网上叫什么
  • 网站大连网络营销的特点及优势
  • 备案通过的网站cpa广告联盟网站建设教程
  • 手机网站如何建设网站建设最好的书籍是
  • 河南省住房建设厅网站首页咨询律师免费解答
  • 搭建网站需要的软件电商sku是什么意思
  • 房地产公司网站建设报价方案设计网站首页要几天
  • 旅游网站用dw怎么做定州市住房和城乡建设局 网站
  • 档案网站建设的意义无人区在线高清免费看
  • 集团公司网站开发方案闵行建设网站
  • 中建西部建设股份有限公司网站用html做简单网站
  • 九江哪家网站建设公司好福州网站快速排名
  • 网站建设mvc三层框架图一般上什么网站
  • daozicms企业建站系统网站建设凡客
  • 公司做网站的步骤地址信息采集平台
  • 淘宝客网站建设平台网站怎么提交收录
  • 网站建站哪个好扒wordpress
  • 网络公司制作网站公司做网站需要服务器吗
  • 做近代史纲要题的网站网站的交互设计包括哪些
  • 永久免费随身wifi软件下载整站关键词排名优化
  • 大丰做网站哪家最好产品网站系统
  • 网站建设方案应急处置wordpress收录优化