Skip to content

Commit

Permalink
feat:add gitmoji install note
Browse files Browse the repository at this point in the history
  • Loading branch information
gongna-au committed Oct 30, 2023
1 parent fce3e15 commit 1baddaf
Show file tree
Hide file tree
Showing 2 changed files with 148 additions and 21 deletions.
36 changes: 15 additions & 21 deletions _posts/2023-10-14-test-markdown.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ tags: [Gateway]
comments: true
---

## 基础
## 1.基础

> 什么是API网关?
Expand Down Expand Up @@ -34,17 +34,17 @@ API网关是一个服务器,它充当API前端和后端服务之间的中介

> 以下是网关服务发现的一般工作原理:
1. **服务注册**:当一个新的服务实例启动时,它会在注册中心注册自己,提供一些元数据,如服务的IP地址、端口、版本、健康检查端点等。
**服务注册**:当一个新的服务实例启动时,它会在注册中心注册自己,提供一些元数据,如服务的IP地址、端口、版本、健康检查端点等。

2. **健康检查**:注册中心会定期对注册的服务实例进行健康检查。如果某个服务实例不再健康或无法访问,注册中心会将其标记为不可用。
**健康检查**:注册中心会定期对注册的服务实例进行健康检查。如果某个服务实例不再健康或无法访问,注册中心会将其标记为不可用。

3. **服务发现**:当API网关需要路由一个请求到某个服务时,它会查询注册中心,获取该服务的所有健康实例的列表。然后,网关可以使用某种负载均衡策略(如轮询、最少连接等)来选择一个服务实例,并将请求路由到该实例。
**服务发现**:当API网关需要路由一个请求到某个服务时,它会查询注册中心,获取该服务的所有健康实例的列表。然后,网关可以使用某种负载均衡策略(如轮询、最少连接等)来选择一个服务实例,并将请求路由到该实例。

4. **动态更新**:如果服务实例的状态发生变化(例如,新的实例被添加或现有的实例失败),注册中心会通知所有监听这些变化的客户端(如API网关)。这样,网关可以实时更新其路由决策,确保请求总是被路由到健康的服务实例。
**动态更新**:如果服务实例的状态发生变化(例如,新的实例被添加或现有的实例失败),注册中心会通知所有监听这些变化的客户端(如API网关)。这样,网关可以实时更新其路由决策,确保请求总是被路由到健康的服务实例。

5. **负载均衡**:在得到健康的服务实例列表后,网关可以使用负载均衡算法来决定将请求路由到哪个实例。
**负载均衡**:在得到健康的服务实例列表后,网关可以使用负载均衡算法来决定将请求路由到哪个实例。

6. **故障转移**:如果选定的服务实例突然变得不可用,网关可以重新选择另一个健康的实例,并重新路由请求。
**故障转移**:如果选定的服务实例突然变得不可用,网关可以重新选择另一个健康的实例,并重新路由请求。

借助注册中心和服务发现机制,API网关可以确保高可用性和弹性,即使在动态的、经常变化的微服务环境中也是如此。

Expand Down Expand Up @@ -74,7 +74,7 @@ API网关是一个服务器,它充当API前端和后端服务之间的中介
测试:定期进行故障注入和混沌工程实验,模拟网关故障,以确保上述策略和措施的有效性,并训练团队应对真实故障。


使用API网关进行流量控制或限流
> 使用API网关进行流量控制或限流
流量控制或限流是API网关中的关键功能,用于防止系统过载并确保资源的公平使用。以下是实现流量控制的常见方法:

Expand Down Expand Up @@ -187,11 +187,9 @@ function responseTimeMiddleware(request, response, next) {
```
这只是一个基本的示例,实际的实现可能会更复杂,特别是在异步环境中。但基本的原理是相同的:在请求的开始和结束时记录时间,然后计算差异。

> 数据库中间件如何实现负载均衡?请描述其背后的原理。

> 如何确保数据库中间件的高可用性?

## Java 和Go
## 2.Java 和Go

Go和Java在并发方面都提供了强大的工具和特性,但它们的方法和哲学是不同的。以下是两者在并发方面的主要区别:

Expand Down Expand Up @@ -225,8 +223,6 @@ Java: JVM进行了大量的优化,包括JIT编译、垃圾收集和线程优
Go: Go运行时直接管理goroutines的调度,这通常意味着更少的上下文切换和更高效的执行。
两者都有自己的优势。Java的并发工具库更加成熟和全面,但可能需要更多的资源。Go提供了一个简单、直接和高效的方式来处理并发,但可能需要开发者对CSP模型有更深入的理解。

选择哪种语言通常取决于项目的具体需求和团队的熟悉程度。


> Go的运行时会在少量的OS线程上调度这些goroutines。这里的少量的OS线程和Java线程在操作系统层面映射的本地线程有什么区别?
Expand All @@ -248,7 +244,7 @@ Go: Go的运行时对线程的管理提供了很大的控制权,例如可以
Java: Java提供了对线程的低级访问,但很多细节(如线程调度)是由操作系统和JVM控制的。
总的来说,Go的并发模型主要关注轻量级、高效和可伸缩性,而Java的并发模型则依赖于操作系统的线程模型,可能需要更多的资源管理和优化。

## SQL 请求经过中间件的过程
## 3.SQL 请求经过中间件的过程

词法分析:
操作: 输入的SQL字符串首先会被分解成一个令牌序列。
Expand Down Expand Up @@ -286,7 +282,7 @@ Java: Java提供了对线程的低级访问,但很多细节(如线程调度
如何被使用: 客户端收到结果后进行相应的处理,例如展示给用户或者进一步的处理。
在整个过程中,从最初的SQL字符串到最终的查询结果,每一步都构建或使用前一步的输出来完成其工作。

## Parser的工作原理
## 4.Parser的工作原理

工作流程:

Expand Down Expand Up @@ -395,7 +391,6 @@ Ports: 定义允许的端口和协议。
隔离: 当至少有一个选择Pod的网络策略存在时,该Pod被视为"隔离"的。否则,它是"非隔离"的,并且所有入站和出站流量都被允许。



隔离特定Pod的所有入站流量:
```yaml
apiVersion: networking.k8s.io/v1
Expand Down Expand Up @@ -473,7 +468,7 @@ policyTypes:
- Egress
```
## 如何保证数据库中间件的高可用性?
## 5.如何保证数据库中间件的高可用性?
保证数据库中间件的高可用性是确保整个系统稳定性的关键部分。以下是一些常用的策略和方法来确保数据库中间件的高可用性:
Expand Down Expand Up @@ -512,7 +507,7 @@ policyTypes:
通过上述策略和方法,可以大大提高数据库中间件的高可用性,确保在各种故障情况下,系统仍然可以正常运行。
## HA 负载均衡器(如HAProxy、Nginx等)如何分发流量
## 6.HA 负载均衡器(如HAProxy、Nginx等)如何分发流量
#### 准备工作:
Expand Down Expand Up @@ -565,15 +560,14 @@ docker logs web2
```
多次运行上述命令,会看到请求在两个服务器之间进行负载均衡。

6. 清理
清理
完成测试后,可以停止并删除所有容器:

```shell
docker stop web1 web2 haproxy
docker rm web1 web2 haproxy
```
总结
通过上述步骤,已经成功地在本地部署了一个使用HAProxy的简单负载均衡环境,并了解了如何配置HAProxy来分发流量。在实际生产环境中,HAProxy和其他负载均衡器提供了更多高级功能和优化选项,但上述示例为提供了一个基本的了解和起点。




133 changes: 133 additions & 0 deletions _posts/2023-11-21-test-markdown.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
---
layout: post
title: git-emoji 安装和配置
subtitle:
tags: [git]
comments: true
---


## 安装

```shell
$ sudo sh -c "curl https://raw.githubusercontent.com/mrowa44/emojify/master/emojify -o /usr/local/bin/emojify && chmod +x /usr/local/bin/emojify"
```

报错:
```shell
$ hello % emojify "Hey, I just :raising_hand: you, and this is :scream: , but here's my :calling: , so :telephone_receiver: me, maybe?"
Oh my! That’s a very old version of bash you’re using, we don’t support that anymore :(
Consider upgrading it or, if you must use bash 3.2.57(1)-release, download an old version of
emojify from here: https://github.com/mrowa44/emojify/blob/old_bash_support/emojify
```
更新:
```shell
$ brew install bash
```
测试:
```shell
$ emojify "Hey, I just :raising_hand: you, and this is :scream: , but here's my :calling: , so :telephone_receiver: me, maybe?"
```
```shell
$ alias gitlog='git log --oneline --color | emojify | less -r'

$ gitlog
```
存在的问题就是每开一个终端都要执行该操作。
## 交互式客户端安装
```shell
$ npm i -g gitmoji-cli
```
测试
```shell
$ gitmoji --help
```
查看 emoji 列表
```shell
$ gitmoji -l
```
```shell
🎨 - :art: - Improve structure / format of the code.
⚡️ - :zap: - Improve performance.
🔥 - :fire: - Remove code or files.
🐛 - :bug: - Fix a bug.
🚑️ - :ambulance: - Critical hotfix.
✨ - :sparkles: - Introduce new features.
📝 - :memo: - Add or update documentation.
🚀 - :rocket: - Deploy stuff.
💄 - :lipstick: - Add or update the UI and style files.
🎉 - :tada: - Begin a project.
✅ - :white_check_mark: - Add, update, or pass tests.
🔒️ - :lock: - Fix security or privacy issues.
🔐 - :closed_lock_with_key: - Add or update secrets.
🔖 - :bookmark: - Release / Version tags.
🚨 - :rotating_light: - Fix compiler / linter warnings.
🚧 - :construction: - Work in progress.
💚 - :green_heart: - Fix CI Build.
⬇️ - :arrow_down: - Downgrade dependencies.
⬆️ - :arrow_up: - Upgrade dependencies.
📌 - :pushpin: - Pin dependencies to specific versions.
👷 - :construction_worker: - Add or update CI build system.
📈 - :chart_with_upwards_trend: - Add or update analytics or track code.
♻️ - :recycle: - Refactor code.
➕ - :heavy_plus_sign: - Add a dependency.
➖ - :heavy_minus_sign: - Remove a dependency.
🔧 - :wrench: - Add or update configuration files.
🔨 - :hammer: - Add or update development scripts.
🌐 - :globe_with_meridians: - Internationalization and localization.
✏️ - :pencil2: - Fix typos.
💩 - :poop: - Write bad code that needs to be improved.
⏪️ - :rewind: - Revert changes.
🔀 - :twisted_rightwards_arrows: - Merge branches.
📦️ - :package: - Add or update compiled files or packages.
👽️ - :alien: - Update code due to external API changes.
🚚 - :truck: - Move or rename resources (e.g.: files, paths, routes).
📄 - :page_facing_up: - Add or update license.
💥 - :boom: - Introduce breaking changes.
🍱 - :bento: - Add or update assets.
♿️ - :wheelchair: - Improve accessibility.
💡 - :bulb: - Add or update comments in source code.
🍻 - :beers: - Write code drunkenly.
💬 - :speech_balloon: - Add or update text and literals.
🗃️ - :card_file_box: - Perform database related changes.
🔊 - :loud_sound: - Add or update logs.
🔇 - :mute: - Remove logs.
👥 - :busts_in_silhouette: - Add or update contributor(s).
🚸 - :children_crossing: - Improve user experience / usability.
🏗️ - :building_construction: - Make architectural changes.
📱 - :iphone: - Work on responsive design.
🤡 - :clown_face: - Mock things.
🥚 - :egg: - Add or update an easter egg.
🙈 - :see_no_evil: - Add or update a .gitignore file.
📸 - :camera_flash: - Add or update snapshots.
⚗️ - :alembic: - Perform experiments.
🔍️ - :mag: - Improve SEO.
🏷️ - :label: - Add or update types.
🌱 - :seedling: - Add or update seed files.
🚩 - :triangular_flag_on_post: - Add, update, or remove feature flags.
🥅 - :goal_net: - Catch errors.
💫 - :dizzy: - Add or update animations and transitions.
🗑️ - :wastebasket: - Deprecate code that needs to be cleaned up.
🛂 - :passport_control: - Work on code related to authorization, roles and permissions.
🩹 - :adhesive_bandage: - Simple fix for a non-critical issue.
🧐 - :monocle_face: - Data exploration/inspection.
⚰️ - :coffin: - Remove dead code.
🧪 - :test_tube: - Add a failing test.
👔 - :necktie: - Add or update business logic.
🩺 - :stethoscope: - Add or update healthcheck.
🧱 - :bricks: - Infrastructure related changes.
🧑‍💻 - :technologist: - Improve developer experience.
💸 - :money_with_wings: - Add sponsorships or money related infrastructure.
🧵 - :thread: - Add or update code related to multithreading or concurrency.
🦺 - :safety_vest: - Add or update code related to validation.
```

0 comments on commit 1baddaf

Please sign in to comment.