当前位置:网站首页>[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
 Insert picture description here

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

 Insert picture description here

3. Package and publish the project

Execute package command

mvn -Prelease-nacos clean install -U  -Dmaven.test.skip=true

 Insert picture description here

Pack up , Execute startup script

sh distribution/target/nacos-server-{version}/nacos/bin/startup.sh -m standalone

image.png

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 ;
     Insert picture description here

Check if the start is successful

 Insert picture description here
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
 Insert picture description here
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 .
 Insert picture description here
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
md5content Of md5
tenant_id Tenant ID, Corresponding tenant_ino Medium tenant_id
app_name ascription App name
typejson、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
md5content 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
idid
nid Primary key , Self increasing
data_id data id
group_id Group id
app_name apply name
content Configure the content
md5content Of md5
tenant_id Tenant ID, Different namespaces
gmt_create Creation time
gmt_modified Modification time
op_typeI、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 &

 Insert picture description here
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
 Insert picture description here
There is already one 6666 The port of LISTEN It's in ;

Configuration debugging
stay Idea Create a new one in remote start-up ;
 Insert picture description here
 Insert picture description here

Start debugging
Start debugging ; Make a breakpoint , Then manage the back-end operations ; Look at the effect
 Insert picture description here

Debugging successful

The project started , The debugging is also successful ; Then we can easily start reading the source code !


原网站

版权声明
本文为[Shizhenzhen's grocery store]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/186/202207051237525957.html