当前位置:网站首页>[Nacos cloud native] the first step of reading the source code is to start Nacos locally
[Nacos cloud native] the first step of reading the source code is to start Nacos locally
2022-06-22 13:35:00 【Shizhenzhen's grocery store】
Preface
Before we read Nacos Before source code , We have to understand Nacos do , And how to use it , This makes it easier for us to understand the source code ;
see Nacos Official documents of , We know Naocs It has the following characteristics :
- Configuration center
- Service registration and discovery
- …
Nacos It provides us with a management interface , To facilitate the configuration of data ; Let's take the whole Nacos The source code is cloned , Local boot ; Familiarize yourself with how to use it
start-up Nacos project
1. clone Nacos Source code
git clone https://github.com/alibaba/nacos.git
Import to Idea in 
2. To configure Mysql data source
Nacos Built in embedded derby database , But it is only suitable for development testing , It's not good for us to observe the data ; So let's change the database to Mysql
In the use of Mysql Before , You need to create nacos_config The database of sql File in module distribution Medium conf/nacos-mysql.sql ; Execute this file ;
In the module nacos/distribution Add Mysql Configuration file for
## The database for mysql
spring.datasource.platform=mysql
## Database number Because there may be multiple data sources configured Master-slave
db.num=1
db.url.0=jdbc:mysql://XX.XX.XXX.XX:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user.0=name
db.password.0=password

3. Package and publish the project
Execute package command
mvn -Prelease-nacos clean install -U -Dmaven.test.skip=true

Pack up , Execute startup script
sh distribution/target/nacos-server-{version}/nacos/bin/startup.sh -m standalone

here -m standalone Stand alone mode start , Other optional parameters are :
-f [config/naming]
Boot mode Only one module can be started ,config: Configuration center ; naming: Service registration and discovery , When not set, all modules will start-s Followed by the service package name ; The default value is
nacos-server
You can specify the startup Jar Package name ;
Check if the start is successful

After successful startup , You can access the management background
http://localhost:8848/nacos/index.html The password of the login account is : nacos
The management background after login 
If you add parameters when you just start -f config Now all we see is Configuration Management and Namespace Two menu bars
For detailed explanation of use, please refer to the official documents Console manual
Nacos Configuration center database table structure description
tenant_info Tenant information table ( The namespace table )
Nacos be based on Namespace Help users logically isolate multiple namespaces , This can help users better manage tests 、 Advance 、 Production and other multi environment services and configurations , Let each environment have the same configuration ( Such as database data source ) You can define different values .
The data in this namespace is the existence table tenant_info in
tenant_info
| Field | remarks |
|---|---|
| id | The primary key increases automatically |
| kp | Set value 1 |
| tenant_id | Namespace id, It's a UUID character string |
| tenant_name | Namespace name |
| tenant_desc | Namespace description |
| create_source | founder |
| gmt_create | Creation time |
| gmt_modified | Modification time |
(kp,tenant_id) Make up a unique constraint
config_info Configuration information table
All configured data is stored in this table ;
| Field | describe |
|---|---|
| id | Since the primary key |
| data_id | data ID |
| group_id | Group ID, Default DEFAULT_GROUP |
| content | Configure the content , It's a longtext type |
| md5 | content Of md5 |
| tenant_id | Tenant ID, Corresponding tenant_ino Medium tenant_id |
| app_name | ascription App name |
| type | json、properties、text、xml And so on |
| gmt_create | Creation time |
| gmt_modified | Modification time |
| c_desc | describe |
config_info_beta Gray configuration information
Nacos Grayscale publishing function in , If you click grayscale Publishing , And fill in the grayscale publishing server Ip; Information will be stored here ;
| Field | describe |
|---|---|
| id | The primary key increases automatically |
| data_id | data id |
| group_id | Group id |
| app_name | apply name |
| content | Configure the content |
| beta_ips | Machines requiring grayscale Publishing , If ip In this , The configuration information will be obtained |
| md5 | content Of md5 |
| tenant_id | Tenant ID, Different namespaces |
| gmt_create | Creation time |
| gmt_modified | Modification time |
(data_id,group_id,tenant_id) Make up a unique constraint
config_tags_relation tag A relational table
Each configuration file can be marked with tag label ; This table records the configuration file and tag Binding relationship of
| Field | describe |
|---|---|
| id | Primary key . |
| tag_name | The tag name |
| tag_type | Label type |
| data_id | data id |
| group_id | Group id |
| tenant_id | Tenant ID, Different namespaces |
| nid | The primary key grows by itself |
(id,tag_name,tag_type) Make up a unique constraint
his_config_info Historical configuration table
Nacos The historical configuration will be recorded , Used to facilitate rollback configuration ; By default, it exceeds 30 The record of days will be deleted ;
| Field | describe |
|---|---|
| id | id |
| nid | Primary key , Self increasing |
| data_id | data id |
| group_id | Group id |
| app_name | apply name |
| content | Configure the content |
| md5 | content Of md5 |
| tenant_id | Tenant ID, Different namespaces |
| gmt_create | Creation time |
| gmt_modified | Modification time |
| op_type | I、U、D Operation type , Add, replace and delete |
How to debug locally Jar Package start source code
Due to the above startup mode , We may not be able to do local Debug; But we can turn it on at startup Debug port , Through remote monitoring Debug Port to carry on Debug;
Let's modify the startup script first , Open the debug port to modify
file distribution/target/nacos-server-{version}/nacos/bin/startup.sh
# Add debug port 6666 The debug port can be set at will
JAVA_DEBUG_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=6666,server=y,suspend=n"
echo "$JAVA ${JAVA_DEBUG_OPTS} ${JAVA_OPT} " > ${
BASE_DIR}/logs/start.out 2>&1 &
nohup $JAVA ${
JAVA_DEBUG_OPTS} ${
JAVA_OPT} nacos.nacos >> ${
BASE_DIR}/logs/start.out 2>&1 &

Restart
Stop the project first sh distribution/target/nacos-server-{version}/nacos/bin/shutdown.sh
And then restart it sh distribution/target/nacos-server-1.1.3/nacos/bin/startup.sh -m standalone
Successful launch , Check whether the debug port is open 
There is already one 6666 The port of LISTEN It's in ;
Configuration debugging
stay Idea Create a new one in remote start-up ;

Start debugging
Start debugging ; Make a breakpoint , Then manage the back-end operations ; Look at the effect 
Debugging successful
The project started , The debugging is also successful ; Then we can easily start reading the source code !
边栏推荐
- Leetcode 297 match de la semaine
- AcWing第52场周赛
- "Dare not doubt the code, but have to doubt the code" a network request timeout analysis
- 310. Minimum Height Trees
- MySQL 5.7 + Navicat download and installation tutorial (with installation package)
- Leetcode subsequence / substring problem
- 342. Power of Four
- Wechat payment QR code generation
- Interaction between awk language and Oracle database for nearly half a year
- leetcode 11. Container with the most water
猜你喜欢

310. Minimum Height Trees

leetcode 1579. Ensure that the graph can be completely traversed

Leetcode union search set

Detailed installation tutorial of MySQL 8.0.29 under windows to solve the problem that vcruntime140 cannot be found_ 1.dll、plugin caching_ sha2_ password could not be loaded

leetcode 968. Monitoring binary tree

leetcode-子序列/子串问题

Rce & Code Execution Vulnerability

leetcode 99.恢复二叉搜索树

Acwing week 53

Leetcode knapsack problem
随机推荐
Think PHP environment construction notes
240. Search a 2D Matrix II
leetcode 99.恢复二叉搜索树
Leetcode knapsack problem
Leetcode 297 match de la semaine
Testing methodology - data driven testing
190. Reverse Bits
RobotFramework二次开发——Socket推送实时日志
leetcode 834. 树中距离之和
leetcode 834. Sum of distances in the tree
Docker installing PostgreSQL
AcWing第54场周赛
SQL functions -- converting a one to many relationship to a one to one relationship
Wechat payment QR code generation
leetcode-并查集
leetcode 11. Container with the most water
240. Search a 2D Matrix II
聊一聊数据库的行存与列存
934. Shortest Bridge
机器人方向的刚性需求→个人思考←