设计原则-工作经验-日常

software engineering 项目软件问题
stack overflow
database administrators 数据库问题
系统问题 ask ubuntu | unix& linux

在这里插入图片描述

1. 生产绝对不能让用户调用内部系统

不能给app服务指定公网访问域名, 必须走网关;
网关可以有token拦截,可以有 ip 角度 接口角度限制访问的频率;

生产差点事故;
给app 配置了域名, app.upower.sg; 这样导致短信发送接口被攻击了;
在nginx中去掉 app.upower.sg的server配置,又导致了服务调用不可用,
没有创建订单成功,那么用户可以一直租借充电宝!!!

2. linux

docker启动的容器,检查到底是docker compose启动的,还是docker run启动的

Docker Compose会设置com.docker.compose.project、com.docker.compose.service等标签。用户可以通过docker inspect命令查看容器的详细信息,然后过滤出Labels部分。如果有这些特定的标签,尤其是项目名称相关的,那么很可能是通过Compose启动的。

docker inspect --format='{{json .Config.Labels}}' <容器名或ID> | jq
docker inspect --format='{{json .Config.Labels}}' 00c49e58fb1f  | jq

jq是Linux系统中把文本字符串格式化成json格式的工具

{
“com.docker.compose.config-hash”: “cd7f0553be6ad133873f564afbef8aef4fa1917d37a1f55b0c787c1133939913”,
“com.docker.compose.container-number”: “1”,
“com.docker.compose.oneoff”: “False”,
“com.docker.compose.project”: “mysql8036”,
“com.docker.compose.project.config_files”: “docker-compose.yml”,
“com.docker.compose.project.working_dir”: “/opt/docker/mysql8.0.36”,
“com.docker.compose.service”: “db”,
“com.docker.compose.version”: “1.25.0”
}
docker run 启动的容器: ◦ 默认不包含上述标签(除非手动添加了类似的 --label 参数)
用find 搜索到docker compose yml

3. 生产环境

在这里插入图片描述

4. 编码

本地debug测试服务器代码

nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5004 -jar /opt/apisix/fundation-test-1.0-SNAPSHOT.jar &

JDK 8 及其一下:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

解释

transport=dt_socket:使用 Socket 通信。

server=y:JVM 作为调试服务器。

suspend=n:不阻塞 JVM 启动(设为 y 会等待调试器连接后再启动应用)。

address=*:5005:监听所有网卡的 5005 端口。

docker
dockerfile中设置参数

ENV JAVA_TOOL_OPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"

启动镜像做好端口的映射
docker run -p 5005:5005 -p 8080:8080 your-image
k8s

env:
- name: JAVA_TOOL_OPTIONS
  value: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
kubectl port-forward pod/your-pod 5005:5005

流量转发逻辑
ssh -L 5005:serverhost:5005 user@test-server
link
在这里插入图片描述
新版本:
在这里插入图片描述

在这里插入图片描述

5.

Arthas:通过阿里开源的 Arthas 工具动态修改字节码(不重启服务)。

IDEA HotSwap:在调试模式下,修改代码后使用 Ctrl+F10 热更新(仅支持方法体修改)…

curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: <你的Admin Key>' -X PUT -d '
{
  "uri": "/*",
  "plugins": {
    "coraza-wasm": {
      "conf": {
        "rules": [
          "Include @modsecurity.conf",
          "Include crs-setup.conf",
          "Include rules/*.conf"
        ]
      }
    }
  },
  "upstream": {
    "type": "roundrobin",
    "nodes": {
      "backend:80": 1
    }
  }
}'

6. 网关

java发版出现502⇒ 有人发版;

7. json

序列化对象,手动指定 serialVersionUID ,有版本要求

@Data
public class TrustedDevice implements Serializable {


    private static final long serialVersionUID = -6243351240857227829L;

8. 定时调度

quz

idleWaitTime 扫描任务的时间间隔

  # Job Scheduler,处理定时任务
  quartz:
    job-store-type: jdbc
    properties:
      org:
        quartz:
          threadPool:
            threadCount: 10
          scheduler:
            idleWaitTime: 3000
    scheduler-name: backend_scheduler

9.

sequenceDiagram
    participant Client
    participant APISIX
    participant Redis
    Client->>APISIX: 携带Token请求API
    APISIX->>Redis: 查询Token对应的userId
    alt Token有效
        Redis-->>APISIX: 返回userId
        APISIX->>APISIX: 生成限流Key(userId+路径)
        APISIX->>APISIX: 执行限流计数
        alt 未超限
            APISIX->>Client: 正常响应
        else 超限
            APISIX->>Client: 返回超限结果
        end
    else Token无效
        APISIX->>Client: 返回token无效结果
    end

10.

11.

12.

13.

14.

15.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值