2006-京淘Day10-1

1.关于服务器检索指令

1.1 检索java程序

命令: jps

关闭进程: 
1. kill PID号 “卑微的杀死进程” 如果当前的进程项被其他进程使用时 ,则不会关闭.
2. kill -15 PID号 “温柔的杀死” 被杀死之前可以做善后
3. kill -9 PID号 强制杀死

1.2 检索任意程序

命令: ps -ef | grep xxxx服务名称
说明: ps -ef 表示获取当前Linux系统中的所有的服务信息. “|” 将管道之前的查询的结果当做参数传递给后边的操作.
例子:

1.3 关于防火墙的说明

1). 检查防火墙开放的端口

firewall-cmd --list-ports
 

2).检查端口是否开放

firewall-cmd --query-port 80/tcp
 

3). 开启防火墙

firewall-cmd --zone=public --add-port=80/tcp --permanent
 

4).移除端口

 firewall-cmd --zone=public --remove-port=9090/tcp --permanent
 

 

5).关于防火墙操作的解释
–zone #作用域

–add-port=80/tcp #添加端口,格式为:端口/通讯协议

–remove-port=80/tcp #移除端口,格式为:端口/通讯协议

–permanent #永久生效,没有此参数重启后失效

6).重启防火墙

firewall-cmd --reload
 

2.Linux 安装Nginx服务器

2.1 Linux项目部署图

2.2 Nginx 安装

2.2.1 Linux下载nginx服务器

2.2.2 上传Nginx服务器

2.2.3 解压nginx

命令: [root@localhost src]# tar -zxvf nginx-1.19.3.tar.gz

2.2.4 nginx目录结构问题

nginx中有2个目录结构:
1.源文件目录 负责nginx的安装 编辑 等操作.

安装命令:
1. [root@localhost nginx]# ./configure
2. make
3. make install

2.工作目录       负责nginx的反向代理等配置....    
/usr/local/nginx

2.2.5 nginx 命令

说明:nginx的目录应该在 “/usr/local/nginx”

命令:
进入sbin目录之后,执行相关操作

命令:

    ./nginx                 启动nginx
    ./nginx  -s  reload   重启nginx
    ./nignx  -s  stop     停止nginx
 

启动效果测试:

2.3 Linux nginx实现反向代理/负载均衡

2.3.1 实现域名代理

需求: 要求用户通过http://manage.jt.com的方式访问Linux中的Nginx.并且实现负载均衡.

2.3.2 配置nginx服务器

说明:修改 工作目录中的nginx之后 保持配置文件.之后重启nginx即可

  #1.配置Linux集群
    server {
        listen 80;
        server_name manage.jt.com;

        location / {
            proxy_pass http://tomcats;
        }
    }

    upstream tomcats {
        server  192.168.126.129:8081;
        server  192.168.126.129:8082;
    }
    

    # 配置Linux 图片代理
    server {
        listen 80;
        server_name  image.jt.com;

        location / {
            #配置图片磁盘地址.
            root  /usr/local/src/images;
        }
    }
    
 

3.Linux Mysql集群搭建

3.1 预习 IP地址修改

3.1.1 修改虚拟机MAC地址

当新建虚拟机时,修改mac网络地址.

3.1.2 检查IP地址

命令: ip addr
如果没有IP展现则执行如下的命令

service NetworkManager stop 
chkconfig  NetworkManager  off    永久关闭 Manager网卡
service  network restart          重启network网卡
 

3.1.3 修改IP地址

1).找到IP地址的目录

cd /etc/sysconfig/network-scripts/
 

2).修改IP地址.

 vim ifcfg-ens33

 

修改完成之后 保存退出即可.

3). 重启网卡 检查IP地址是否正确

 

3.2 为什么需要搭建Mysql集群

描述: 如果项目中使用单台数据库,如果由于不可抗因素导致设备损坏,数据丢失,将直接影响用户的使用.需要需要进行优化.

3.3 数据库备份方式

3.3.1 数据库冷备份

说明:定期将数据库中的文件通过sql的方式进行转储.保证数据在一定时间之内得到备份.
缺点: 由于是定期备份,所以可能会导致数据的丢失.
数据库的冷备份 是恢复数据的最后有效的手段.所以一直延续使用.

3.3.2 数据库热备份

说明: 由于数据库的同步的操作在工作中特别的频繁,所以作为数据库的开发人员,也设计了数据库如何进行同步.

同步的步骤:
1. 数据库主库如果需要启动同步策略,则必须开启二进制日志文件.(默认条件下是关闭的.)
2. 当用户"更新"数据库时,主库会将更新信息写入二进制日志文件中. (主库任务结束)
3. 从库会利用IO线程读取主库中更新的二进制日志文件.
4. IO线程会将读取到的信息采用异步的方式先保存到中继日志中.(中继临时存储数据的媒介)
5. SQL线程会读取中继日志中的信息,之后将sql语句同步到从数据库中.至此实现了主从的同步…

4实现数据库主从搭建

4.1 开启主库二进制文件

命令: vim /etc/my.cnf

4.2 重启数据库

说明:当修改完成配置文件之后,需要重启数据库,使得二进制文件生效.

4.3 配置从数据库

说明:根据主数据库的配置信息 配置从数据库 如图所示 配置完成之后,重启数据库即可

4.4 实现主从的挂载

主库: 192.168.126.129 master
从库: 192.168.126.130 slave

4.4.1 检查主库状态信息

4.4.2 实现主从挂载

4.4.3 关于重置二进制日志文件的说明

问题描述: 有时重启多次主机之后,会生成多个二进制文件信息.如图所示

解决方案: 删除多余的二进制日志文件,之后重启数据库即可

之后重新挂载即可

作业

1.实现Linux项目部署
129: 8081/8082/8083
130: 8081/8082/8083
要求:所有的tomcat服务器都应该链接主库 注意事项 链接主库的IP地址.

  1. 部署2台从数据库 129主机 130/131从 一主两从的结构.
  2. 有bug 关于图片的 暂时忽略 为什么会产生这样的现象…

 

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   
    <modelVersion>4.0.0</modelVersion>

    <artifactId>jt-cart</artifactId>

    <!--默认的打包方式就是jar 不写也没有关系-->
    <packaging>jar</packaging>
    <parent>
        <artifactId>jt</artifactId>
        <groupId>com.jt</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <!--
        添加依赖信息
    -->

    <dependencies>
        <dependency>
            <!--依赖实质依赖的是jar包文件-->
            <groupId>com.jt</groupId>
            <artifactId>jt-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

    </dependencies>

    <!--3.添加插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

 

server:
  port: 8094
  servlet:
    context-path: /
spring:
  datasource:
    #引入druid数据源
    #type: com.alibaba.druid.pool.DruidDataSource
   #driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root

  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp
#mybatis-plush配置
mybatis-plus:
  type-aliases-package: com.jt.pojo
  mapper-locations: classpath:/mybatis/mappers/*.xml
  configuration:
    map-underscore-to-camel-case: true

logging:
  level: 
    com.jt.mapper: debug

#关于Dubbo配置
dubbo:
  scan:
    basePackages: com.jt    #指定dubbo的包路径 扫描dubbo注解
  application:              #应用名称
    name: provider-cart     #一个接口对应一个服务名称 一个接口可以有多个实现
  registry: #注册中心 用户获取数据从从机中获取 主机只负责监控整个集群 实现数据同步
    address: zookeeper://192.168.126.129:2181?backup=192.168.126.129:2182,192.168.126.129:2183
  protocol:  #指定协议
    name: dubbo  #使用dubbo协议(tcp-ip)  web-controller直接调用sso-Service
    port: 20882  #每一个服务都有自己特定的端口 不能重复.

 

package com.jt;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.jt.mapper")
public class SpringBootRun {

    public static void main(String[] args) {

        SpringApplication.run(SpringBootRun.class, args);
    }
}

 

package com.jt.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jt.pojo.Cart;
import org.apache.ibatis.annotations.Update;

public interface CartMapper extends BaseMapper<Cart> {

    @Update("update tb_cart set num=#{num},updated=now() where user_id=#{userId}")
    void updateCartNum(Cart cart);
}

 

package com.jt.service;

import com.alibaba.dubbo.config.annotation.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.jt.mapper.CartMapper;
import com.jt.pojo.Cart;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

@Service
public class DubboCartServiceImpl implements DubboCartService{

    @Autowired
    private CartMapper cartMapper;

    @Override
    public List<Cart> findCartListByUserId(Long userId) {
        QueryWrapper<Cart> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("user_id", userId);
        return cartMapper.selectList(queryWrapper);
    }

    @Override
    public void updateCartNum(Cart cart) {

       // cartMapper.updateCartNum(cart);
        //1.准备修改的数据 根据对象中不为null的元素当做set条件
        Cart cartTemp=new Cart();
        cartTemp.setNum(cart.getNum());
        //2.根据对象中不为null的元素当做where条件
        UpdateWrapper<Cart> updateWrapper=
                new UpdateWrapper<>(cart.setNum(null));
//        updateWrapper.eq("user_id", cart.getUserId())
                .eq("item_id", cart.getItemId());
        cartMapper.update(cartTemp, updateWrapper);
    }

    //如果重复加购则更新数量

    /**
     * 1.查询是否已经有改数据 user_id/item_id
     * @param cart
     */
    @Override
    public void saveCart(Cart cart) {

        QueryWrapper<Cart> queryWrapper=new QueryWrapper();
        queryWrapper.eq("user_id", cart.getUserId())
                .eq("item_id",cart.getItemId());

        Cart cartDB=cartMapper.selectOne(queryWrapper);
        if (cartDB==null){
           //用户第一次加购
           cartMapper.insert(cart);
        }else {
            //用户需要修改数量
            int num=cart.getNum()+cartDB.getNum();
            cart.setNum(num);
            cartMapper.updateCartNum(cart);
        }
    }

    @Override
    public void deleteCarts(Long userId, Long itemId) {

        QueryWrapper queryWrapper=new QueryWrapper();
        queryWrapper.eq("user_id", userId);
        queryWrapper.eq("item_id", itemId);
        cartMapper.delete(queryWrapper);
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值