当前位置:网站首页>[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-07-05 12:51: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 standalon
e 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 !
边栏推荐
- ZABBIX monitors mongodb templates and configuration operations
- 实战模拟│JWT 登录认证
- RHCAS6
- #yyds干货盘点#js截取文件后缀名
- Storage Basics
- JSON parsing error special character processing (really speechless... Troubleshooting for a long time)
- Distributed solution - distributed lock solution - redis based distributed lock implementation
- Pytoch loads the initialization V3 pre training model and reports an error
- Reshape the power of multi cloud products with VMware innovation
- Oppo Xiaobu launched Obert, a large pre training model, and promoted to the top of kgclue
猜你喜欢
Vonedao solves the problem of organizational development effectiveness
Pytoch monolayer bidirectional_ LSTM implements MNIST and fashionmnist data classification
Keras implements verification code identification
10 minute fitness method reading notes (3/5)
Distance measuring sensor chip 4530a used in home intelligent lighting
Setting up sqli lab environment
Simply take stock reading notes (4/8)
Volatile instruction rearrangement and why instruction rearrangement is prohibited
UNIX socket advanced learning diary - advanced i/o functions
Compilation principle reading notes (1/12)
随机推荐
Knowledge representation (KR)
GPON technical standard analysis I
Simply take stock reading notes (4/8)
Migrate data from Mysql to neo4j database
Using docker for MySQL 8.0 master-slave configuration
Clear neo4j database data
Transactions from December 27 to 28, 2021
ZABBIX monitors mongodb templates and configuration operations
10 minute fitness method reading notes (3/5)
开发者,云原生数据库是未来吗?
Kotlin流程控制、循环
2021-12-22 transaction record
2021-12-21 transaction record
GNN(pytorch-geometric)
Full text search of MySQL
Programming skills for optimizing program performance
From the perspective of technology and risk control, it is analyzed that wechat Alipay restricts the remote collection of personal collection code
ZABBIX ODBC database monitoring
Annotation problem and hidden Markov model
UNIX socket advanced learning diary -ipv4-ipv6 interoperability